juwelier 2.1.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.
- checksums.yaml +7 -0
- data/.coveralls.yml +2 -0
- data/.document +8 -0
- data/.semver +5 -0
- data/.travis.yml +7 -0
- data/.yardopts +2 -0
- data/ChangeLog.markdown +230 -0
- data/Gemfile +40 -0
- data/LICENSE.txt +20 -0
- data/README.markdown +252 -0
- data/Rakefile +78 -0
- data/bin/juwelier +9 -0
- data/features/generator/cucumber.feature +103 -0
- data/features/generator/directory_layout.feature +86 -0
- data/features/generator/dotdocument.feature +13 -0
- data/features/generator/env_options.feature +9 -0
- data/features/generator/gemfile.feature +81 -0
- data/features/generator/git.feature +102 -0
- data/features/generator/license.feature +20 -0
- data/features/generator/rakefile.feature +158 -0
- data/features/generator/readme.feature +12 -0
- data/features/generator/test.feature +54 -0
- data/features/generator/test_helper.feature +149 -0
- data/features/placeholder.feature +5 -0
- data/features/step_definitions/debug_steps.rb +6 -0
- data/features/step_definitions/filesystem_steps.rb +70 -0
- data/features/step_definitions/generator_steps.rb +387 -0
- data/features/step_definitions/task_steps.rb +6 -0
- data/features/support/env.rb +41 -0
- data/features/tasks/build_gem.feature +9 -0
- data/features/tasks/version.feature +31 -0
- data/features/tasks/version_bumping.feature +49 -0
- data/juwelier.gemspec +241 -0
- data/lib/juwelier.rb +178 -0
- data/lib/juwelier/commands.rb +20 -0
- data/lib/juwelier/commands/build_gem.rb +40 -0
- data/lib/juwelier/commands/check_dependencies.rb +66 -0
- data/lib/juwelier/commands/install_gem.rb +31 -0
- data/lib/juwelier/commands/release_gemspec.rb +87 -0
- data/lib/juwelier/commands/release_to_git.rb +64 -0
- data/lib/juwelier/commands/release_to_rubygems.rb +28 -0
- data/lib/juwelier/commands/validate_gemspec.rb +30 -0
- data/lib/juwelier/commands/version/base.rb +55 -0
- data/lib/juwelier/commands/version/bump_major.rb +13 -0
- data/lib/juwelier/commands/version/bump_minor.rb +12 -0
- data/lib/juwelier/commands/version/bump_patch.rb +14 -0
- data/lib/juwelier/commands/version/write.rb +12 -0
- data/lib/juwelier/commands/write_gemspec.rb +39 -0
- data/lib/juwelier/errors.rb +8 -0
- data/lib/juwelier/gemcutter_tasks.rb +8 -0
- data/lib/juwelier/gemspec_helper.rb +87 -0
- data/lib/juwelier/generator.rb +304 -0
- data/lib/juwelier/generator/application.rb +63 -0
- data/lib/juwelier/generator/bacon_mixin.rb +43 -0
- data/lib/juwelier/generator/github_mixin.rb +22 -0
- data/lib/juwelier/generator/micronaut_mixin.rb +41 -0
- data/lib/juwelier/generator/minitest_mixin.rb +42 -0
- data/lib/juwelier/generator/options.rb +172 -0
- data/lib/juwelier/generator/rdoc_mixin.rb +13 -0
- data/lib/juwelier/generator/riot_mixin.rb +42 -0
- data/lib/juwelier/generator/rspec_mixin.rb +42 -0
- data/lib/juwelier/generator/shindo_mixin.rb +44 -0
- data/lib/juwelier/generator/shoulda_mixin.rb +42 -0
- data/lib/juwelier/generator/testspec_mixin.rb +42 -0
- data/lib/juwelier/generator/testunit_mixin.rb +39 -0
- data/lib/juwelier/generator/yard_mixin.rb +15 -0
- data/lib/juwelier/rubyforge_tasks.rb +95 -0
- data/lib/juwelier/rubygems_dot_org_tasks.rb +38 -0
- data/lib/juwelier/rubygems_tasks.rb +38 -0
- data/lib/juwelier/specification.rb +110 -0
- data/lib/juwelier/tasks.rb +239 -0
- data/lib/juwelier/templates/.document +5 -0
- data/lib/juwelier/templates/.gitignore +49 -0
- data/lib/juwelier/templates/Gemfile +12 -0
- data/lib/juwelier/templates/LICENSE.txt +20 -0
- data/lib/juwelier/templates/README.rdoc +19 -0
- data/lib/juwelier/templates/Rakefile +9 -0
- data/lib/juwelier/templates/bacon/flunking.rb +7 -0
- data/lib/juwelier/templates/bacon/helper.rb +10 -0
- data/lib/juwelier/templates/bundler_setup.erb +10 -0
- data/lib/juwelier/templates/features/default.feature +9 -0
- data/lib/juwelier/templates/features/support/env.rb +11 -0
- data/lib/juwelier/templates/juwelier_tasks.erb +31 -0
- data/lib/juwelier/templates/micronaut/flunking.rb +7 -0
- data/lib/juwelier/templates/micronaut/helper.rb +19 -0
- data/lib/juwelier/templates/minitest/flunking.rb +7 -0
- data/lib/juwelier/templates/minitest/helper.rb +13 -0
- data/lib/juwelier/templates/other_tasks.erb +70 -0
- data/lib/juwelier/templates/riot/flunking.rb +11 -0
- data/lib/juwelier/templates/riot/helper.rb +5 -0
- data/lib/juwelier/templates/rspec/.rspec +1 -0
- data/lib/juwelier/templates/rspec/flunking.rb +7 -0
- data/lib/juwelier/templates/rspec/helper.rb +14 -0
- data/lib/juwelier/templates/shindo/flunking.rb +8 -0
- data/lib/juwelier/templates/shindo/helper.rb +7 -0
- data/lib/juwelier/templates/shoulda/flunking.rb +7 -0
- data/lib/juwelier/templates/shoulda/helper.rb +12 -0
- data/lib/juwelier/templates/simplecov.erb +16 -0
- data/lib/juwelier/templates/testspec/flunking.rb +7 -0
- data/lib/juwelier/templates/testspec/helper.rb +7 -0
- data/lib/juwelier/templates/testunit/flunking.rb +7 -0
- data/lib/juwelier/templates/testunit/helper.rb +11 -0
- data/lib/juwelier/version.rb +10 -0
- data/lib/juwelier/version_helper.rb +141 -0
- data/test/fixtures/bar/VERSION.yml +4 -0
- data/test/fixtures/bar/bin/foo_the_ultimate_bin +1 -0
- data/test/fixtures/bar/hey_include_me_in_gemspec +0 -0
- data/test/fixtures/bar/lib/foo_the_ultimate_lib.rb +1 -0
- data/test/fixtures/existing-project-with-version-constant/.document +5 -0
- data/test/fixtures/existing-project-with-version-constant/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-constant/LICENSE.txt +20 -0
- data/test/fixtures/existing-project-with-version-constant/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-constant/Rakefile +85 -0
- data/test/fixtures/existing-project-with-version-constant/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-constant/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-constant/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-constant/test/test_helper.rb +10 -0
- data/test/fixtures/existing-project-with-version-plaintext/.document +5 -0
- data/test/fixtures/existing-project-with-version-plaintext/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-plaintext/LICENSE.txt +20 -0
- data/test/fixtures/existing-project-with-version-plaintext/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-plaintext/Rakefile +84 -0
- data/test/fixtures/existing-project-with-version-plaintext/VERSION +1 -0
- data/test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb +10 -0
- data/test/fixtures/existing-project-with-version-yaml/.document +5 -0
- data/test/fixtures/existing-project-with-version-yaml/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-yaml/LICENSE.txt +20 -0
- data/test/fixtures/existing-project-with-version-yaml/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-yaml/Rakefile +84 -0
- data/test/fixtures/existing-project-with-version-yaml/VERSION.yml +4 -0
- data/test/fixtures/existing-project-with-version-yaml/bin/foo_the_ultimate_bin +0 -0
- data/test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-yaml/test/test_helper.rb +10 -0
- data/test/geminstaller.yml +12 -0
- data/test/juwelier/commands/test_build_gem.rb +112 -0
- data/test/juwelier/commands/test_install_gem.rb +35 -0
- data/test/juwelier/commands/test_release_to_gemcutter.rb +39 -0
- data/test/juwelier/commands/test_release_to_git.rb +271 -0
- data/test/juwelier/commands/test_release_to_github.rb +477 -0
- data/test/juwelier/commands/test_validate_gemspec.rb +27 -0
- data/test/juwelier/commands/test_write_gemspec.rb +103 -0
- data/test/juwelier/commands/version/test_base.rb +53 -0
- data/test/juwelier/commands/version/test_bump_major.rb +22 -0
- data/test/juwelier/commands/version/test_bump_minor.rb +19 -0
- data/test/juwelier/commands/version/test_bump_patch.rb +20 -0
- data/test/juwelier/commands/version/test_write.rb +22 -0
- data/test/juwelier/generator/test_application.rb +142 -0
- data/test/juwelier/generator/test_options.rb +227 -0
- data/test/juwelier/test_gemspec_helper.rb +44 -0
- data/test/juwelier/test_generator.rb +140 -0
- data/test/juwelier/test_generator_initialization.rb +150 -0
- data/test/juwelier/test_generator_mixins.rb +23 -0
- data/test/juwelier/test_specification.rb +245 -0
- data/test/juwelier/test_tasks.rb +50 -0
- data/test/juwelier/test_version_helper.rb +214 -0
- data/test/shoulda_macros/juwelier_macros.rb +35 -0
- data/test/test_helper.rb +174 -0
- data/test/test_juwelier.rb +177 -0
- metadata +396 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
class Juwelier
|
2
|
+
module Commands
|
3
|
+
autoload :BuildGem, 'juwelier/commands/build_gem'
|
4
|
+
autoload :InstallGem, 'juwelier/commands/install_gem'
|
5
|
+
autoload :CheckDependencies, 'juwelier/commands/check_dependencies'
|
6
|
+
autoload :ReleaseToGit, 'juwelier/commands/release_to_git'
|
7
|
+
autoload :ReleaseGemspec, 'juwelier/commands/release_gemspec'
|
8
|
+
autoload :ReleaseToRubygems, 'juwelier/commands/release_to_rubygems'
|
9
|
+
autoload :ValidateGemspec, 'juwelier/commands/validate_gemspec'
|
10
|
+
autoload :WriteGemspec, 'juwelier/commands/write_gemspec'
|
11
|
+
|
12
|
+
module Version
|
13
|
+
autoload :Base, 'juwelier/commands/version/base'
|
14
|
+
autoload :BumpMajor, 'juwelier/commands/version/bump_major'
|
15
|
+
autoload :BumpMinor, 'juwelier/commands/version/bump_minor'
|
16
|
+
autoload :BumpPatch, 'juwelier/commands/version/bump_patch'
|
17
|
+
autoload :Write, 'juwelier/commands/version/write'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class Juwelier
|
2
|
+
module Commands
|
3
|
+
class BuildGem
|
4
|
+
attr_accessor :base_dir, :gemspec_helper, :file_utils, :version_helper
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
self.file_utils = FileUtils
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
gemspec_helper.update_version(version_helper) unless gemspec_helper.has_version?
|
12
|
+
|
13
|
+
gemspec = gemspec_helper.parse
|
14
|
+
|
15
|
+
if Gem::Version.new(`gem -v`) >= Gem::Version.new("2.0.0.a")
|
16
|
+
gem_file_name = Gem::Package.build(gemspec)
|
17
|
+
else
|
18
|
+
require "rubygems/builder"
|
19
|
+
gem_file_name = Gem::Builder.new(gemspec).build
|
20
|
+
end
|
21
|
+
|
22
|
+
pkg_dir = File.join(base_dir, 'pkg')
|
23
|
+
file_utils.mkdir_p pkg_dir
|
24
|
+
|
25
|
+
gem_file_name = File.join(base_dir, gem_file_name)
|
26
|
+
file_utils.mv gem_file_name, pkg_dir
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.build_for(juwelier)
|
30
|
+
command = new
|
31
|
+
|
32
|
+
command.base_dir = juwelier.base_dir
|
33
|
+
command.gemspec_helper = juwelier.gemspec_helper
|
34
|
+
command.version_helper = juwelier.version_helper
|
35
|
+
|
36
|
+
command
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
class Juwelier
|
2
|
+
module Commands
|
3
|
+
class CheckDependencies
|
4
|
+
class MissingDependenciesError < RuntimeError
|
5
|
+
attr_accessor :dependencies, :type
|
6
|
+
end
|
7
|
+
|
8
|
+
attr_accessor :gemspec, :type
|
9
|
+
|
10
|
+
def run
|
11
|
+
missing_dependencies = find_missing_dependencies
|
12
|
+
|
13
|
+
if missing_dependencies.empty?
|
14
|
+
puts "#{type || 'All'} dependencies seem to be installed."
|
15
|
+
else
|
16
|
+
puts "Missing some dependencies. Install them with the following commands:"
|
17
|
+
missing_dependencies.each do |dependency|
|
18
|
+
puts %Q{\tgem install #{dependency.name} --version "#{dependency.requirement.to_s}"}
|
19
|
+
end
|
20
|
+
|
21
|
+
abort "Run the specified gem commands before trying to run this again: #{$0} #{ARGV.join(' ')}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def find_missing_dependencies
|
26
|
+
if Gem::Specification.respond_to?(:find_by_name)
|
27
|
+
dependencies.select do |dependency|
|
28
|
+
begin
|
29
|
+
spec = Gem::Specification.find_by_name(dependency.name, *dependency.requirement.as_list)
|
30
|
+
spec.activate if spec
|
31
|
+
!spec
|
32
|
+
rescue LoadError => e
|
33
|
+
true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
else
|
37
|
+
dependencies.select do |dependency|
|
38
|
+
begin
|
39
|
+
Gem.activate dependency.name, *dependency.requirement.as_list
|
40
|
+
false
|
41
|
+
rescue LoadError => e
|
42
|
+
true
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def dependencies
|
49
|
+
case type
|
50
|
+
when :runtime, :development
|
51
|
+
gemspec.send("#{type}_dependencies")
|
52
|
+
else
|
53
|
+
gemspec.dependencies
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.build_for(juwelier)
|
58
|
+
command = new
|
59
|
+
|
60
|
+
command.gemspec = juwelier.gemspec
|
61
|
+
|
62
|
+
command
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class Juwelier
|
2
|
+
module Commands
|
3
|
+
class InstallGem
|
4
|
+
include FileUtils
|
5
|
+
|
6
|
+
attr_accessor :gemspec_helper, :output
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
self.output = $stdout
|
10
|
+
end
|
11
|
+
|
12
|
+
def run
|
13
|
+
command = "#{gem_command} install #{gemspec_helper.gem_path}"
|
14
|
+
output.puts "Executing #{command.inspect}:"
|
15
|
+
|
16
|
+
sh command # TODO where does sh actually come from!? - rake, apparently
|
17
|
+
end
|
18
|
+
|
19
|
+
def gem_command
|
20
|
+
"#{RbConfig::CONFIG['RUBY_INSTALL_NAME']} -S gem"
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.build_for(juwelier)
|
24
|
+
command = new
|
25
|
+
command.output = juwelier.output
|
26
|
+
command.gemspec_helper = juwelier.gemspec_helper
|
27
|
+
command
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
class Juwelier
|
4
|
+
module Commands
|
5
|
+
class ReleaseGemspec
|
6
|
+
attr_accessor :gemspec, :version, :repo, :output, :gemspec_helper, :base_dir
|
7
|
+
|
8
|
+
def initialize(attributes = {})
|
9
|
+
self.output = $stdout
|
10
|
+
|
11
|
+
attributes.each_pair do |key, value|
|
12
|
+
send("#{key}=", value)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def run(args = {})
|
17
|
+
remote = args[:remote] || 'origin'
|
18
|
+
branch = args[:branch] || 'master'
|
19
|
+
local_branch = args[:local_branch] || branch
|
20
|
+
remote_branch = args[:remote_branch] || branch
|
21
|
+
|
22
|
+
unless clean_staging_area?
|
23
|
+
system "git status"
|
24
|
+
raise "Unclean staging area! Be sure to commit or .gitignore everything first. See `git status` above."
|
25
|
+
end
|
26
|
+
|
27
|
+
repo.checkout(local_branch)
|
28
|
+
|
29
|
+
regenerate_gemspec!
|
30
|
+
commit_gemspec! if gemspec_changed?
|
31
|
+
|
32
|
+
output.puts "Pushing #{local_branch} to #{remote}"
|
33
|
+
repo.push(remote, "#{local_branch}:#{remote_branch}")
|
34
|
+
end
|
35
|
+
|
36
|
+
def clean_staging_area?
|
37
|
+
# surprisingly simpler than ruby-git
|
38
|
+
`git ls-files --deleted --modified --others --exclude-standard` == ""
|
39
|
+
end
|
40
|
+
|
41
|
+
def commit_gemspec!
|
42
|
+
gemspec_gitpath = working_subdir.join(gemspec_helper.path)
|
43
|
+
repo.add(gemspec_gitpath.to_s)
|
44
|
+
output.puts "Committing #{gemspec_gitpath}"
|
45
|
+
repo.commit "Regenerate gemspec for version #{version}"
|
46
|
+
end
|
47
|
+
|
48
|
+
def regenerate_gemspec!
|
49
|
+
gemspec_helper.update_version(version)
|
50
|
+
gemspec_helper.write
|
51
|
+
end
|
52
|
+
|
53
|
+
def gemspec_changed?
|
54
|
+
# OMGHAX. ruby-git status always ends up being 'M', so let's do it a crazy way
|
55
|
+
system "git status -s #{working_subdir.join(gemspec_helper.path)} | grep #{working_subdir.join(gemspec_helper.path)} > /dev/null 2>/dev/null"
|
56
|
+
end
|
57
|
+
|
58
|
+
def gemspec_helper
|
59
|
+
@gemspec_helper ||= Juwelier::GemSpecHelper.new(self.gemspec, self.base_dir)
|
60
|
+
end
|
61
|
+
|
62
|
+
def working_subdir
|
63
|
+
return @working_subdir if @working_subdir
|
64
|
+
cwd = base_dir_path
|
65
|
+
@working_subdir = cwd.relative_path_from(Pathname.new(repo.dir.path))
|
66
|
+
@working_subdir
|
67
|
+
end
|
68
|
+
|
69
|
+
def base_dir_path
|
70
|
+
Pathname.new(base_dir).realpath
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.build_for(juwelier)
|
74
|
+
command = self.new
|
75
|
+
|
76
|
+
command.base_dir = juwelier.base_dir
|
77
|
+
command.gemspec = juwelier.gemspec
|
78
|
+
command.version = juwelier.version
|
79
|
+
command.repo = juwelier.repo
|
80
|
+
command.output = juwelier.output
|
81
|
+
command.gemspec_helper = juwelier.gemspec_helper
|
82
|
+
|
83
|
+
command
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
class Juwelier
|
2
|
+
module Commands
|
3
|
+
class ReleaseToGit
|
4
|
+
attr_accessor :gemspec, :version, :repo, :output, :gemspec_helper, :base_dir
|
5
|
+
|
6
|
+
def initialize(attributes = {})
|
7
|
+
self.output = $stdout
|
8
|
+
|
9
|
+
attributes.each_pair do |key, value|
|
10
|
+
send("#{key}=", value)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def run(args = {})
|
15
|
+
remote = args[:remote] || 'origin'
|
16
|
+
branch = args[:branch] || 'master'
|
17
|
+
local_branch = args[:local_branch] || branch
|
18
|
+
remote_branch = args[:remote_branch] || branch
|
19
|
+
|
20
|
+
unless clean_staging_area?
|
21
|
+
system "git status"
|
22
|
+
raise "Unclean staging area! Be sure to commit or .gitignore everything first. See `git status` above."
|
23
|
+
end
|
24
|
+
|
25
|
+
repo.checkout(local_branch)
|
26
|
+
repo.push(remote, "#{local_branch}:#{remote_branch}")
|
27
|
+
|
28
|
+
if release_not_tagged?
|
29
|
+
output.puts "Tagging #{release_tag}"
|
30
|
+
repo.add_tag(release_tag)
|
31
|
+
|
32
|
+
output.puts "Pushing #{release_tag} to #{remote}"
|
33
|
+
repo.push(remote, release_tag)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def clean_staging_area?
|
38
|
+
`git ls-files --deleted --modified --others --exclude-standard` == ""
|
39
|
+
end
|
40
|
+
|
41
|
+
def release_tag
|
42
|
+
"v#{version}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def release_not_tagged?
|
46
|
+
tag = repo.tag(release_tag) rescue nil
|
47
|
+
tag.nil?
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.build_for(juwelier)
|
51
|
+
command = self.new
|
52
|
+
|
53
|
+
command.base_dir = juwelier.base_dir
|
54
|
+
command.gemspec = juwelier.gemspec
|
55
|
+
command.version = juwelier.version
|
56
|
+
command.repo = juwelier.repo
|
57
|
+
command.output = juwelier.output
|
58
|
+
command.gemspec_helper = juwelier.gemspec_helper
|
59
|
+
|
60
|
+
command
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Juwelier
|
2
|
+
module Commands
|
3
|
+
class ReleaseToRubygems
|
4
|
+
include FileUtils
|
5
|
+
|
6
|
+
attr_accessor :gemspec, :version, :output, :gemspec_helper
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
self.output = $stdout
|
10
|
+
end
|
11
|
+
|
12
|
+
def run
|
13
|
+
command = "gem push #{@gemspec_helper.gem_path}"
|
14
|
+
output.puts "Executing #{command.inspect}:"
|
15
|
+
sh command
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.build_for(juwelier)
|
19
|
+
command = new
|
20
|
+
command.gemspec = juwelier.gemspec
|
21
|
+
command.gemspec_helper = juwelier.gemspec_helper
|
22
|
+
command.version = juwelier.version
|
23
|
+
command.output = juwelier.output
|
24
|
+
command
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Juwelier
|
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
|
+
|
20
|
+
def self.build_for(juwelier)
|
21
|
+
command = new
|
22
|
+
|
23
|
+
command.gemspec_helper = juwelier.gemspec_helper
|
24
|
+
command.output = juwelier.output
|
25
|
+
|
26
|
+
command
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
class Juwelier
|
4
|
+
module Commands
|
5
|
+
module Version
|
6
|
+
class Base
|
7
|
+
|
8
|
+
attr_accessor :repo, :version_helper, :gemspec, :commit, :base_dir
|
9
|
+
|
10
|
+
def run
|
11
|
+
update_version
|
12
|
+
|
13
|
+
self.version_helper.write
|
14
|
+
self.gemspec.version = self.version_helper.to_s
|
15
|
+
|
16
|
+
commit_version if self.repo && self.commit
|
17
|
+
end
|
18
|
+
|
19
|
+
def update_version
|
20
|
+
raise "Subclasses should implement this"
|
21
|
+
end
|
22
|
+
|
23
|
+
def commit_version
|
24
|
+
if self.repo
|
25
|
+
self.repo.add(working_subdir.join(version_helper.path).to_s)
|
26
|
+
self.repo.commit("Version bump to #{self.version_helper.to_s}")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def working_subdir
|
31
|
+
return @working_subdir if @working_subdir
|
32
|
+
cwd = base_dir_path
|
33
|
+
@working_subdir = cwd.relative_path_from(Pathname.new(repo.dir.path))
|
34
|
+
@working_subdir
|
35
|
+
end
|
36
|
+
|
37
|
+
def base_dir_path
|
38
|
+
Pathname.new(base_dir).realpath
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def self.build_for(juwelier)
|
43
|
+
command = new
|
44
|
+
command.repo = juwelier.repo
|
45
|
+
command.version_helper = juwelier.version_helper
|
46
|
+
command.gemspec = juwelier.gemspec
|
47
|
+
command.commit = juwelier.commit
|
48
|
+
command.base_dir = juwelier.base_dir
|
49
|
+
|
50
|
+
command
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|