technicalpickles-jeweler 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog.markdown +27 -7
- data/README.markdown +9 -3
- data/Rakefile +30 -24
- data/TODO +2 -2
- data/VERSION.yml +2 -2
- data/bin/jeweler +1 -77
- data/lib/jeweler/commands/build_gem.rb +22 -0
- data/lib/jeweler/commands/install_gem.rb +19 -0
- data/lib/jeweler/commands/release.rb +45 -0
- data/lib/jeweler/commands/validate_gemspec.rb +21 -0
- data/lib/jeweler/commands/version/base.rb +30 -0
- data/lib/jeweler/commands/version/bump_major.rb +13 -0
- data/lib/jeweler/commands/version/bump_minor.rb +12 -0
- data/lib/jeweler/commands/version/bump_patch.rb +14 -0
- data/lib/jeweler/commands/version/write.rb +12 -0
- data/lib/jeweler/commands/write_gemspec.rb +26 -0
- data/lib/jeweler/commands.rb +10 -0
- data/lib/jeweler/{gemspec.rb → gemspec_helper.rb} +7 -1
- data/lib/jeweler/generator/application.rb +45 -0
- data/lib/jeweler/generator/options.rb +64 -0
- data/lib/jeweler/generator.rb +66 -26
- data/lib/jeweler/tasks.rb +11 -29
- data/lib/jeweler/templates/.gitignore +3 -1
- data/lib/jeweler/templates/LICENSE +1 -1
- data/lib/jeweler/templates/README.rdoc +7 -0
- data/lib/jeweler/templates/Rakefile +48 -31
- data/lib/jeweler/templates/bacon/flunking.rb +1 -1
- data/lib/jeweler/templates/bacon/helper.rb +1 -1
- data/lib/jeweler/templates/features/support/env.rb +0 -2
- data/lib/jeweler/templates/micronaut/flunking.rb +7 -0
- data/lib/jeweler/templates/micronaut/helper.rb +17 -0
- data/lib/jeweler/templates/minitest/flunking.rb +1 -1
- data/lib/jeweler/templates/minitest/helper.rb +1 -0
- data/lib/jeweler/templates/rspec/flunking.rb +1 -1
- data/lib/jeweler/templates/rspec/helper.rb +1 -1
- data/lib/jeweler/templates/shoulda/flunking.rb +2 -2
- data/lib/jeweler/templates/shoulda/helper.rb +1 -1
- data/lib/jeweler/templates/testunit/flunking.rb +1 -1
- data/lib/jeweler/templates/testunit/helper.rb +1 -1
- data/lib/jeweler/{version.rb → version_helper.rb} +1 -1
- data/lib/jeweler.rb +59 -141
- data/test/jeweler/commands/test_build_gem.rb +53 -0
- data/{lib/jeweler/templates/features/steps/default_steps.rb → test/jeweler/commands/test_install_gem.rb} +0 -0
- data/test/jeweler/commands/test_release.rb +145 -0
- data/test/jeweler/commands/test_write_gemspec.rb +58 -0
- data/test/jeweler/commands/version/test_bump_major.rb +21 -0
- data/test/jeweler/commands/version/test_bump_minor.rb +19 -0
- data/test/jeweler/commands/version/test_bump_patch.rb +20 -0
- data/test/jeweler/commands/version/test_write.rb +23 -0
- data/test/test_application.rb +109 -0
- data/test/{test_gemspec.rb → test_gemspec_helper.rb} +9 -5
- data/test/test_generator.rb +179 -0
- data/test/test_helper.rb +11 -23
- data/test/test_jeweler.rb +12 -9
- data/test/test_options.rb +90 -0
- data/test/test_tasks.rb +3 -4
- data/test/{test_version.rb → test_version_helper.rb} +16 -16
- metadata +44 -11
- data/lib/jeweler/templates/README +0 -9
data/ChangeLog.markdown
CHANGED
@@ -1,8 +1,27 @@
|
|
1
|
-
# jeweler
|
1
|
+
# jeweler x.y.z
|
2
|
+
|
3
|
+
* Tasks:
|
4
|
+
* Fixed populating default spec's extra_rdoc_files
|
5
|
+
* Removed redudant gem building/installing tasks. Use rake build and rake install
|
6
|
+
* Generator:
|
7
|
+
* Added support for micronaut
|
8
|
+
* Generate nicer block variable names in Rakefile
|
9
|
+
* Cucumber generation now places steps in features/step_features, to follow cucumber standards
|
10
|
+
|
11
|
+
* shoulda and test/unit test_helpers no longers require mocha
|
12
|
+
* Rakefile uses more readable block variable names
|
13
|
+
* .gitignore now includes pkg and coverage directories
|
14
|
+
* Avoid puts'ing in Rakefile when LoadError occurs. Instead, define a task that aborts with instructions to install.
|
15
|
+
* Cucumber is now optional. Generate stories using --cucumber
|
16
|
+
* Bacon's 'test' task is now 'spec'
|
17
|
+
* Generate README.rdoc instead of just a plain text README
|
18
|
+
* Updated year in README.rdoc and COPYRIGHT to be based on the current year instead of hardcoded
|
19
|
+
|
20
|
+
# jeweler 0.8.1 2009-02-03
|
2
21
|
|
3
22
|
* Fixed minitest generator
|
4
23
|
|
5
|
-
# jeweler 0.8.0
|
24
|
+
# jeweler 0.8.0 2009-02-03
|
6
25
|
|
7
26
|
* Generator:
|
8
27
|
* Supports these new testing frameworks:
|
@@ -13,26 +32,27 @@
|
|
13
32
|
* Creating a new gem is now more verbose, and will show files/directories created
|
14
33
|
* Binaries will now be automatically detected in 'bin'
|
15
34
|
|
16
|
-
# jeweler 0.7.2
|
35
|
+
# jeweler 0.7.2 2009-01-29
|
17
36
|
|
18
37
|
* Added rake task 'version:bump' which is shorthand for 'version:bump:patch'
|
19
38
|
* Generated projects no longer assume RCov is installed.
|
20
39
|
|
21
|
-
# jeweler 0.7.1
|
40
|
+
# jeweler 0.7.1 2009-01-26
|
22
41
|
|
23
42
|
* Fixed yaml not being required
|
43
|
+
* Automatically add files in bin as executables in gemspec
|
24
44
|
|
25
|
-
# jeweler 0.7.0
|
45
|
+
# jeweler 0.7.0 2009-01-19
|
26
46
|
|
27
47
|
* Added support to generator for specifying a description
|
28
48
|
* Condensed README.markdown to be less novel-like
|
29
49
|
* RDoc is now included in your gemspec
|
30
50
|
* Rescue errors that raise in the generator, and display better error message, and exit with a non-zero exit status
|
31
51
|
|
32
|
-
# jeweler 0.6.5
|
52
|
+
# jeweler 0.6.5 2009-01-14
|
33
53
|
|
34
54
|
* `jeweler --create-repo foo` now enables gem creation in addition to creating the repository
|
35
55
|
|
36
|
-
# jeweler 0.6.4
|
56
|
+
# jeweler 0.6.4 2009-01-13
|
37
57
|
|
38
58
|
* Added tasks `build` and `install` as shortcuts for `gem:build` and `gem:install`
|
data/README.markdown
CHANGED
@@ -5,10 +5,16 @@ Jeweler provides two things:
|
|
5
5
|
* Rake tasks for managing gems and versioning of a <a href="http://github.com">GitHub</a> project
|
6
6
|
* A generator for creating kickstarting a new project
|
7
7
|
|
8
|
-
##
|
8
|
+
## Installing
|
9
9
|
|
10
|
-
|
10
|
+
# Run the following if you haven't done so before:
|
11
|
+
gem sources -a http://gems.github.com
|
12
|
+
# Install the gem:
|
13
|
+
sudo gem install technicalpickles-jeweler
|
14
|
+
|
15
|
+
## Using in an existing project
|
11
16
|
|
17
|
+
It's easy to get up and running. Update your instantiate a `Jeweler::Tasks`, and give it a block with details about your project.
|
12
18
|
|
13
19
|
begin
|
14
20
|
require 'jeweler'
|
@@ -26,7 +32,7 @@ It's easy to get up and running. Update your instantiate a `Jeweler::Tasks`, and
|
|
26
32
|
|
27
33
|
In this example, `s` is a Gem::Specification object. See the [GemSpec reference](http://www.rubygems.org/read/chapter/20) for values of interest.
|
28
34
|
|
29
|
-
##
|
35
|
+
## Using to start a new project
|
30
36
|
|
31
37
|
Jeweler provides a generator. It requires you to [setup your name and email for git](http://github.com/guides/tell-git-your-user-name-and-email-address) and [your username and token for GitHub](http://github.com/guides/local-github-config).
|
32
38
|
|
data/Rakefile
CHANGED
@@ -1,33 +1,29 @@
|
|
1
1
|
require 'rake'
|
2
|
-
require 'rake/testtask'
|
3
|
-
begin
|
4
|
-
require 'hanna/rdoctask'
|
5
|
-
rescue LoadError
|
6
|
-
require 'rake/rdoctask'
|
7
|
-
end
|
8
2
|
|
9
|
-
|
10
|
-
$:.unshift('lib')
|
3
|
+
$LOAD_PATH.unshift('lib')
|
11
4
|
|
12
5
|
begin
|
13
6
|
require 'jeweler'
|
14
|
-
Jeweler::Tasks.new do |
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
7
|
+
Jeweler::Tasks.new do |gem|
|
8
|
+
gem.name = "jeweler"
|
9
|
+
gem.summary = "Simple and opinionated helper for creating Rubygem projects on GitHub"
|
10
|
+
gem.email = "josh@technicalpickles.com"
|
11
|
+
gem.homepage = "http://github.com/technicalpickles/jeweler"
|
12
|
+
gem.description = "Simple and opinionated helper for creating Rubygem projects on GitHub"
|
13
|
+
gem.authors = ["Josh Nichols"]
|
14
|
+
gem.files = FileList["[A-Z]*", "{bin,generators,lib,test}/**/*", 'lib/jeweler/templates/.gitignore']
|
15
|
+
gem.add_dependency 'schacon-git'
|
23
16
|
end
|
24
17
|
rescue LoadError
|
25
18
|
puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
26
19
|
end
|
27
20
|
|
21
|
+
require 'rake/testtask'
|
22
|
+
Rake::TestTask.new(:test) do |test|
|
23
|
+
test.libs << 'test'
|
24
|
+
end
|
28
25
|
|
29
|
-
|
30
|
-
|
26
|
+
require 'rake/rdoctask'
|
31
27
|
Rake::RDocTask.new do |rdoc|
|
32
28
|
rdoc.rdoc_dir = 'rdoc'
|
33
29
|
rdoc.title = 'jeweler'
|
@@ -38,17 +34,27 @@ end
|
|
38
34
|
|
39
35
|
begin
|
40
36
|
require 'rcov/rcovtask'
|
41
|
-
Rcov::RcovTask.new
|
37
|
+
Rcov::RcovTask.new(:rcov) do |rcov|
|
38
|
+
rcov.libs << 'test'
|
39
|
+
rcov.pattern = 'test/**/test_*.rb'
|
40
|
+
end
|
42
41
|
rescue LoadError
|
43
|
-
|
42
|
+
task :rcov do
|
43
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
44
|
+
end
|
44
45
|
end
|
45
46
|
|
46
47
|
begin
|
47
48
|
require 'cucumber/rake/task'
|
48
49
|
Cucumber::Rake::Task.new(:features)
|
49
50
|
rescue LoadError
|
50
|
-
|
51
|
+
task :features do
|
52
|
+
abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
|
53
|
+
end
|
51
54
|
end
|
52
55
|
|
53
|
-
|
54
|
-
task :default => [:test, :features]
|
56
|
+
if ENV["RUN_CODE_RUN"] == "true"
|
57
|
+
task :default => [:test, :features]
|
58
|
+
else
|
59
|
+
task :default => :test
|
60
|
+
end
|
data/TODO
CHANGED
@@ -7,5 +7,5 @@
|
|
7
7
|
* Rails generator for making a plugin that's Jeweler enabled
|
8
8
|
* Change generated test filename (test_foo not foo_test)
|
9
9
|
* Releasing
|
10
|
-
*
|
11
|
-
*
|
10
|
+
* Have a way to check if the gem is built yet
|
11
|
+
* Option for enabling
|
data/VERSION.yml
CHANGED
data/bin/jeweler
CHANGED
@@ -5,80 +5,4 @@ require 'optparse'
|
|
5
5
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
6
6
|
require 'jeweler'
|
7
7
|
|
8
|
-
|
9
|
-
attr_reader :opts
|
10
|
-
|
11
|
-
def initialize(args)
|
12
|
-
super()
|
13
|
-
|
14
|
-
self[:testing_framework] = :shoulda
|
15
|
-
|
16
|
-
@opts = OptionParser.new do |o|
|
17
|
-
o.banner = "Usage: #{File.basename($0)} [options] reponame\ne.g. #{File.basename($0)} the-perfect-gem"
|
18
|
-
|
19
|
-
o.on('--bacon', 'generate bacon specs') do
|
20
|
-
self[:testing_framework] = :bacon
|
21
|
-
end
|
22
|
-
|
23
|
-
o.on('--shoulda', 'generate shoulda tests') do
|
24
|
-
self[:testing_framework] = :shoulda
|
25
|
-
end
|
26
|
-
|
27
|
-
o.on('--testunit', 'generate test/unit tests') do
|
28
|
-
self[:testing_framework] = :testunit
|
29
|
-
end
|
30
|
-
|
31
|
-
o.on('--minitest', 'generate minitest tests') do
|
32
|
-
self[:testing_framework] = :minitest
|
33
|
-
end
|
34
|
-
|
35
|
-
o.on('--rspec', 'generate rspec tests') do
|
36
|
-
self[:testing_framework] = :rspec
|
37
|
-
end
|
38
|
-
|
39
|
-
o.on('--create-repo', 'create the repository on GitHub') do
|
40
|
-
self[:create_repo] = true
|
41
|
-
end
|
42
|
-
|
43
|
-
o.on('--summary [SUMMARY]', 'specify the summary of the project') do |summary|
|
44
|
-
self[:summary] = summary
|
45
|
-
end
|
46
|
-
|
47
|
-
o.on_tail('-h', '--help', 'display this help and exit') do
|
48
|
-
puts o
|
49
|
-
exit
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
@opts.parse!(args)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
options = JewelerOpts.new(ARGV)
|
58
|
-
|
59
|
-
unless ARGV.size == 1
|
60
|
-
puts options.opts
|
61
|
-
exit 1
|
62
|
-
end
|
63
|
-
|
64
|
-
github_repo_name = ARGV.first
|
65
|
-
|
66
|
-
begin
|
67
|
-
generator = Jeweler::Generator.new github_repo_name, options
|
68
|
-
generator.run
|
69
|
-
rescue Jeweler::NoGitUserName
|
70
|
-
$stderr.puts %Q{No user.name found in ~/.gitconfig. Please tell git about yourself (see http://github.com/guides/tell-git-your-user-name-and-email-address for details). For example: git config --global user.name "mad voo"}
|
71
|
-
exit 1
|
72
|
-
rescue Jeweler::NoGitUserEmail
|
73
|
-
$stderr.puts %Q{No user.email found in ~/.gitconfig. Please tell git about yourself (see http://github.com/guides/tell-git-your-user-name-and-email-address for details). For example: git config --global user.email mad.vooo@gmail.com}
|
74
|
-
exit 1
|
75
|
-
rescue Jeweler::NoGitHubUser
|
76
|
-
$stderr.puts %Q{No github.user found in ~/.gitconfig. Please tell git about your GitHub account (see http://github.com/blog/180-local-github-config for details). For example: git config --global github.user defunkt}
|
77
|
-
exit 1
|
78
|
-
rescue Jeweler::NoGitHubToken
|
79
|
-
$stderr.puts %Q{No github.token found in ~/.gitconfig. Please tell git about your GitHub account (see http://github.com/blog/180-local-github-config for details). For example: git config --global github.token 6ef8395fecf207165f1a82178ae1b984}
|
80
|
-
exit 1
|
81
|
-
rescue Jeweler::FileInTheWay
|
82
|
-
$stderr.puts "The directory #{github_repo_name} already exists. Maybe move it out of the way before continuing?"
|
83
|
-
exit 1
|
84
|
-
end
|
8
|
+
Jeweler::Generator::Application.run!(*ARGV)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Jeweler
|
2
|
+
module Commands
|
3
|
+
class BuildGem
|
4
|
+
attr_accessor :base_dir, :gemspec_helper, :file_utils
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
self.file_utils = FileUtils
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
gemspec = gemspec_helper.parse
|
12
|
+
gem_file_name = Gem::Builder.new(gemspec).build
|
13
|
+
|
14
|
+
pkg_dir = File.join(base_dir, 'pkg')
|
15
|
+
file_utils.mkdir_p pkg_dir
|
16
|
+
|
17
|
+
gem_file_name = File.join(base_dir, gem_file_name)
|
18
|
+
file_utils.mv gem_file_name, pkg_dir
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Jeweler
|
2
|
+
module Commands
|
3
|
+
class InstallGem
|
4
|
+
attr_accessor :gemspec_helper, :output
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
self.output = $stdout
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
def run
|
12
|
+
command = "sudo gem install #{gemspec_helper.gem_path}"
|
13
|
+
output.puts "Executing #{command.inspect}:"
|
14
|
+
|
15
|
+
sh command # TODO where does sh actually come from!?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class Jeweler
|
2
|
+
module Commands
|
3
|
+
class Release
|
4
|
+
attr_accessor :gemspec, :version, :repo, :output, :gemspec_helper, :base_dir
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
self.output = $stdout
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
repo.checkout('master')
|
12
|
+
|
13
|
+
raise "Hey buddy, try committing them files first" if any_pending_changes?
|
14
|
+
|
15
|
+
gemspec_helper.write
|
16
|
+
|
17
|
+
repo.add(gemspec_helper.path)
|
18
|
+
output.puts "Committing #{gemspec_helper.path}"
|
19
|
+
repo.commit("Regenerated gemspec for version #{version}")
|
20
|
+
|
21
|
+
output.puts "Pushing master to origin"
|
22
|
+
repo.push
|
23
|
+
|
24
|
+
output.puts "Tagging #{release_tag}"
|
25
|
+
repo.add_tag(release_tag)
|
26
|
+
|
27
|
+
output.puts "Pushing #{release_tag} to origin"
|
28
|
+
repo.push('origin', release_tag)
|
29
|
+
end
|
30
|
+
|
31
|
+
def any_pending_changes?
|
32
|
+
!(@repo.status.added.empty? && @repo.status.deleted.empty? && @repo.status.changed.empty?)
|
33
|
+
end
|
34
|
+
|
35
|
+
def release_tag
|
36
|
+
"v#{version}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def gemspec_helper
|
40
|
+
@gemspec_helper ||= Jeweler::GemSpecHelper.new(self.gemspec, self.base_dir)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class Jeweler
|
2
|
+
module Commands
|
3
|
+
class ValidateGemspec
|
4
|
+
attr_accessor :gemspec_helper, :output
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
self.output = $stdout
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
begin
|
12
|
+
gemspec_helper.parse
|
13
|
+
output.puts "#{gemspec_helper.path} is valid."
|
14
|
+
rescue Exception => e
|
15
|
+
output.puts "#{gemspec_helper.path} is invalid. See the backtrace for more details."
|
16
|
+
raise
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Jeweler
|
2
|
+
module Commands
|
3
|
+
module Version
|
4
|
+
class Base
|
5
|
+
|
6
|
+
attr_accessor :repo, :version_helper, :gemspec, :commit
|
7
|
+
|
8
|
+
def run
|
9
|
+
update_version
|
10
|
+
|
11
|
+
self.version_helper.write
|
12
|
+
self.gemspec.version = self.version_helper.to_s
|
13
|
+
|
14
|
+
commit_version if self.repo && self.commit
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_version
|
18
|
+
raise "Subclasses should implement this"
|
19
|
+
end
|
20
|
+
|
21
|
+
def commit_version
|
22
|
+
if self.repo
|
23
|
+
self.repo.add('VERSION.yml')
|
24
|
+
self.repo.commit("Version bump to #{self.version_helper.to_s}", 'VERSION.yml')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class Jeweler
|
2
|
+
module Commands
|
3
|
+
class WriteGemspec
|
4
|
+
attr_accessor :base_dir, :gemspec, :version, :output, :gemspec_helper, :version_helper
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
self.output = $stdout
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
version_helper.refresh
|
12
|
+
gemspec_helper.spec.version = version_helper.to_s
|
13
|
+
gemspec_helper.spec.date = Time.now
|
14
|
+
|
15
|
+
gemspec_helper.write
|
16
|
+
|
17
|
+
output.puts "Generated: #{gemspec_helper.path}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def gemspec_helper
|
21
|
+
@gemspec_helper ||= GemSpecHelper.new(self.gemspec, self.base_dir)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'jeweler/commands/build_gem'
|
2
|
+
require 'jeweler/commands/install_gem'
|
3
|
+
require 'jeweler/commands/release'
|
4
|
+
require 'jeweler/commands/validate_gemspec'
|
5
|
+
require 'jeweler/commands/write_gemspec'
|
6
|
+
require 'jeweler/commands/version/base'
|
7
|
+
require 'jeweler/commands/version/bump_major'
|
8
|
+
require 'jeweler/commands/version/bump_minor'
|
9
|
+
require 'jeweler/commands/version/bump_patch'
|
10
|
+
require 'jeweler/commands/version/write'
|
@@ -34,7 +34,13 @@ class Jeweler
|
|
34
34
|
|
35
35
|
def parse
|
36
36
|
data = File.read(path)
|
37
|
-
|
37
|
+
parsed_gemspec = nil
|
38
|
+
Thread.new { parsed_gemspec = eval("$SAFE = 3\n#{data}", binding, path) }.join
|
39
|
+
parsed_gemspec
|
40
|
+
end
|
41
|
+
|
42
|
+
def gem_path
|
43
|
+
File.join(@base_dir, 'pkg', parse.file_name)
|
38
44
|
end
|
39
45
|
|
40
46
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class Jeweler
|
2
|
+
class Generator
|
3
|
+
class Application
|
4
|
+
class << self
|
5
|
+
def run!(*arguments)
|
6
|
+
options = Jeweler::Generator::Options.new(arguments)
|
7
|
+
|
8
|
+
if options[:show_help]
|
9
|
+
$stderr.puts options.opts
|
10
|
+
return 1
|
11
|
+
end
|
12
|
+
|
13
|
+
unless arguments.size == 1
|
14
|
+
$stderr.puts options.opts
|
15
|
+
return 1
|
16
|
+
end
|
17
|
+
|
18
|
+
github_repo_name = arguments.first
|
19
|
+
|
20
|
+
begin
|
21
|
+
generator = Jeweler::Generator.new(github_repo_name, options)
|
22
|
+
generator.run
|
23
|
+
return 0
|
24
|
+
rescue Jeweler::NoGitUserName
|
25
|
+
$stderr.puts %Q{No user.name found in ~/.gitconfig. Please tell git about yourself (see http://github.com/guides/tell-git-your-user-name-and-email-address for details). For example: git config --global user.name "mad voo"}
|
26
|
+
return 1
|
27
|
+
rescue Jeweler::NoGitUserEmail
|
28
|
+
$stderr.puts %Q{No user.email found in ~/.gitconfig. Please tell git about yourself (see http://github.com/guides/tell-git-your-user-name-and-email-address for details). For example: git config --global user.email mad.vooo@gmail.com}
|
29
|
+
return 1
|
30
|
+
rescue Jeweler::NoGitHubUser
|
31
|
+
$stderr.puts %Q{No github.user found in ~/.gitconfig. Please tell git about your GitHub account (see http://github.com/blog/180-local-github-config for details). For example: git config --global github.user defunkt}
|
32
|
+
return 1
|
33
|
+
rescue Jeweler::NoGitHubToken
|
34
|
+
$stderr.puts %Q{No github.token found in ~/.gitconfig. Please tell git about your GitHub account (see http://github.com/blog/180-local-github-config for details). For example: git config --global github.token 6ef8395fecf207165f1a82178ae1b984}
|
35
|
+
return 1
|
36
|
+
rescue Jeweler::FileInTheWay
|
37
|
+
$stderr.puts "The directory #{github_repo_name} already exists. Maybe move it out of the way before continuing?"
|
38
|
+
return 1
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
class Jeweler
|
2
|
+
class Generator
|
3
|
+
class Options < Hash
|
4
|
+
attr_reader :opts
|
5
|
+
|
6
|
+
def initialize(args)
|
7
|
+
super()
|
8
|
+
|
9
|
+
self[:testing_framework] = :shoulda
|
10
|
+
|
11
|
+
@opts = OptionParser.new do |o|
|
12
|
+
o.banner = "Usage: #{File.basename($0)} [options] reponame\ne.g. #{File.basename($0)} the-perfect-gem"
|
13
|
+
|
14
|
+
o.on('--bacon', 'generate bacon specifications') do
|
15
|
+
self[:testing_framework] = :bacon
|
16
|
+
end
|
17
|
+
|
18
|
+
o.on('--shoulda', 'generate shoulda tests') do
|
19
|
+
self[:testing_framework] = :shoulda
|
20
|
+
end
|
21
|
+
|
22
|
+
o.on('--testunit', 'generate test/unit tests') do
|
23
|
+
self[:testing_framework] = :testunit
|
24
|
+
end
|
25
|
+
|
26
|
+
o.on('--minitest', 'generate minitest tests') do
|
27
|
+
self[:testing_framework] = :minitest
|
28
|
+
end
|
29
|
+
|
30
|
+
o.on('--rspec', 'generate rspec code examples') do
|
31
|
+
self[:testing_framework] = :rspec
|
32
|
+
end
|
33
|
+
|
34
|
+
o.on('--micronaut', 'generate micronaut examples') do
|
35
|
+
self[:testing_framework] = :micronaut
|
36
|
+
end
|
37
|
+
|
38
|
+
o.on('--cucumber', 'generate cucumber stories in addition to the other tests') do
|
39
|
+
self[:use_cucumber] = true
|
40
|
+
end
|
41
|
+
|
42
|
+
o.on('--create-repo', 'create the repository on GitHub') do
|
43
|
+
self[:create_repo] = true
|
44
|
+
end
|
45
|
+
|
46
|
+
o.on('--summary [SUMMARY]', 'specify the summary of the project') do |summary|
|
47
|
+
self[:summary] = summary
|
48
|
+
end
|
49
|
+
|
50
|
+
o.on('--directory [DIRECTORY]', 'specify the directory to generate into') do |directory|
|
51
|
+
self[:directory] = directory
|
52
|
+
end
|
53
|
+
|
54
|
+
o.on_tail('-h', '--help', 'display this help and exit') do
|
55
|
+
self[:show_help] = true
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
@opts.parse!(args)
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|