gem-release 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module GemRelease
2
- VERSION = '0.2.2'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -15,7 +15,7 @@ module GemRelease
15
15
 
16
16
  def bump!
17
17
  File.open(filename, 'w+') { |f| f.write(bumped_content) }
18
- require_version
18
+ reload_version
19
19
  end
20
20
 
21
21
  def new_number
@@ -42,8 +42,8 @@ module GemRelease
42
42
  "lib/#{path}/version.rb"
43
43
  end
44
44
 
45
- def require_version
46
- silence { require(filename) }
45
+ def reload_version
46
+ silently { load(filename) }
47
47
  end
48
48
 
49
49
  def major(major, minor, patch)
@@ -65,5 +65,16 @@ module GemRelease
65
65
  def bumped_content
66
66
  content.sub(VERSION_PATTERN) { "#{$1}#{new_number}#{$3}" }
67
67
  end
68
+
69
+ def silently(&block)
70
+ warn_level = $VERBOSE
71
+ $VERBOSE = nil
72
+ begin
73
+ result = block.call
74
+ ensure
75
+ $VERBOSE = warn_level
76
+ end
77
+ result
78
+ end
68
79
  end
69
80
  end
@@ -12,6 +12,10 @@ class Gem::Commands::BumpCommand < Gem::Command
12
12
  :version => 'patch',
13
13
  :commit => true,
14
14
  :push => false,
15
+ :tag => false,
16
+ :release => false,
17
+ :key => '',
18
+ :host => '',
15
19
  :quiet => false
16
20
  }
17
21
 
@@ -21,6 +25,10 @@ class Gem::Commands::BumpCommand < Gem::Command
21
25
  option :version, '-v', 'Target version: next [major|minor|patch] or a given version number [x.x.x]'
22
26
  option :commit, '-c', 'Perform a commit after incrementing gem version'
23
27
  option :push, '-p', 'Push to the origin git repository'
28
+ option :tag, '-t', 'Create a git tag and push --tags to origin'
29
+ option :release, '-r', 'Build gem from a gemspec and push to rubygems.org'
30
+ option :key, '-k', 'When releasing: Use the given API key from ~/.gem/credentials'
31
+ option :host, '-h', 'When releasing: Push to a gemcutter-compatible host other than rubygems.org'
24
32
  option :quiet, '-q', 'Do not output status messages'
25
33
  end
26
34
 
@@ -28,7 +36,8 @@ class Gem::Commands::BumpCommand < Gem::Command
28
36
  @new_version_number = nil
29
37
 
30
38
  # enforce option dependencies
31
- options[:commit] = options[:commit] || options[:push]
39
+ options[:push] = false if options[:tag] # push is performed as part of tag
40
+ options[:commit] = options[:commit] || options[:push] || options[:tag] || options[:release]
32
41
 
33
42
  in_gemspec_dirs do
34
43
  bump
@@ -39,6 +48,8 @@ class Gem::Commands::BumpCommand < Gem::Command
39
48
  else
40
49
  commit if options[:commit]
41
50
  push if options[:push]
51
+ tag if options[:tag]
52
+ release if options[:release]
42
53
  end
43
54
  end
44
55
 
@@ -65,4 +76,19 @@ class Gem::Commands::BumpCommand < Gem::Command
65
76
  say "Pushing to the origin git repository" unless quiet?
66
77
  `git push origin`
67
78
  end
79
+
80
+ def release
81
+ cmd = ReleaseCommand.new
82
+ [:key, :host].each do |option|
83
+ cmd.options[option] = options[option]
84
+ end
85
+ cmd.options[:quiet] = options[:quiet]
86
+ cmd.execute
87
+ end
88
+
89
+ def tag
90
+ cmd = TagCommand.new
91
+ cmd.options[:quiet] = options[:quiet]
92
+ cmd.execute
93
+ end
68
94
  end
@@ -28,13 +28,14 @@ class Gem::Commands::ReleaseCommand < Gem::Command
28
28
  end
29
29
 
30
30
  def execute
31
+ tag if options[:tag]
32
+
31
33
  in_gemspec_dirs do
32
34
  build
33
35
  push
34
36
  remove
35
37
  end
36
38
 
37
- tag if options[:tag]
38
39
  say "All is good, thanks my friend.\n"
39
40
  end
40
41
 
@@ -60,6 +61,6 @@ class Gem::Commands::ReleaseCommand < Gem::Command
60
61
  end
61
62
 
62
63
  def tag
63
- TagCommand.new.invoke
64
+ TagCommand.new(:quiet => quiet?).invoke
64
65
  end
65
66
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem-release
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-27 00:00:00.000000000 Z
12
+ date: 2012-03-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: test_declarative
16
- requirement: &70092272876100 !ruby/object:Gem::Requirement
16
+ requirement: &70094017679920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.0.2
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70092272876100
24
+ version_requirements: *70094017679920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mocha
27
- requirement: &70092272875160 !ruby/object:Gem::Requirement
27
+ requirement: &70094017711600 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 0.9.8
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70092272875160
35
+ version_requirements: *70094017711600
36
36
  description: Release your ruby gems with ease. (What a bold statement for such a tiny
37
37
  plugin ...)
38
38
  email: svenfuchs@artweb-design.de