gem-release 0.3.1 → 0.4.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.
@@ -1,3 +1,3 @@
1
1
  module GemRelease
2
- VERSION = '0.3.1'
2
+ VERSION = '0.4.0'
3
3
  end
@@ -6,11 +6,15 @@ module GemRelease
6
6
 
7
7
  VERSION_PATTERN = /(VERSION\s*=\s*(?:"|'))((?:(?!"|').)*)("|')/
8
8
  NUMBER_PATTERN = /(\d+)\.(\d+)\.(\d+)(.*)/
9
+ PRERELEASE_NUMBER_PATTERN = /(\d+)\.(\d+)\.(\d+)\.(.*)(\d+)/
9
10
 
10
11
  attr_reader :target
11
12
 
12
13
  def initialize(options = {})
13
- @target = options[:target] || :patch
14
+ @target = options[:target]
15
+ if @target == nil || @target == ''
16
+ @target = is_prerelease_version_number?(old_number) ? :pre : :patch
17
+ end
14
18
  end
15
19
 
16
20
  def bump!
@@ -19,9 +23,20 @@ module GemRelease
19
23
  end
20
24
 
21
25
  def new_number
22
- @new_number ||= old_number.sub(NUMBER_PATTERN) do
23
- respond_to?(target) ? send(target, $1, $2, $3) : target
24
- end
26
+ @new_number ||=
27
+ if is_version_number?(target)
28
+ target
29
+ elsif [:major, :minor, :patch].include?(target.to_sym)
30
+ old_number.sub(NUMBER_PATTERN) do
31
+ send(target, $1, $2, $3)
32
+ end
33
+ elsif is_prerelease_version_number?(old_number)
34
+ old_number.sub(PRERELEASE_NUMBER_PATTERN) do
35
+ prerelease($1, $2, $3, $4, $5)
36
+ end
37
+ else
38
+ "#{old_number}.#{target}1"
39
+ end
25
40
  end
26
41
 
27
42
  def old_number
@@ -58,6 +73,10 @@ module GemRelease
58
73
  "#{major}.#{minor}.#{patch.to_i + 1}"
59
74
  end
60
75
 
76
+ def prerelease(major, minor, patch, prereleasePrefix, prereleaseNumber)
77
+ "#{major}.#{minor}.#{patch}.#{prereleasePrefix || 'pre'}#{prereleaseNumber.to_i + 1}"
78
+ end
79
+
61
80
  def content
62
81
  @content ||= File.read(filename)
63
82
  end
@@ -76,5 +95,13 @@ module GemRelease
76
95
  end
77
96
  result
78
97
  end
98
+
99
+ def is_version_number?(v)
100
+ v.to_s.match(NUMBER_PATTERN) != nil
101
+ end
102
+
103
+ def is_prerelease_version_number?(v)
104
+ v.to_s.match(PRERELEASE_NUMBER_PATTERN) != nil
105
+ end
79
106
  end
80
107
  end
@@ -9,7 +9,7 @@ class Gem::Commands::BumpCommand < Gem::Command
9
9
  attr_reader :arguments, :usage
10
10
 
11
11
  DEFAULTS = {
12
- :version => 'patch',
12
+ :version => '',
13
13
  :commit => true,
14
14
  :push => false,
15
15
  :tag => false,
@@ -22,13 +22,13 @@ class Gem::Commands::BumpCommand < Gem::Command
22
22
  def initialize(options = {})
23
23
  super 'bump', 'Bump the gem version', DEFAULTS.merge(options)
24
24
 
25
- option :version, '-v', 'Target version: next [major|minor|patch] or a given version number [x.x.x]'
25
+ option :version, '-v', 'Target version: next [major|minor|patch|pre] or a given version number [x.x.x]'
26
26
  option :commit, '-c', 'Perform a commit after incrementing gem version'
27
27
  option :push, '-p', 'Push to the origin git repository'
28
28
  option :tag, '-t', 'Create a git tag and push --tags to origin'
29
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'
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'
32
32
  option :quiet, '-q', 'Do not output status messages'
33
33
  end
34
34
 
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.3.1
4
+ version: 0.4.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-04-22 00:00:00.000000000 Z
12
+ date: 2012-08-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: test_declarative
16
- requirement: &70341463036800 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 0.0.2
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70341463036800
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.0.2
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: mocha
27
- requirement: &70341463036320 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,7 +37,12 @@ dependencies:
32
37
  version: 0.9.8
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70341463036320
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.8
36
46
  description: Release your ruby gems with ease. (What a bold statement for such a tiny
37
47
  plugin ...)
38
48
  email: svenfuchs@artweb-design.de
@@ -84,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
94
  version: 1.3.6
85
95
  requirements: []
86
96
  rubyforge_project: ! '[none]'
87
- rubygems_version: 1.8.15
97
+ rubygems_version: 1.8.24
88
98
  signing_key:
89
99
  specification_version: 3
90
100
  summary: Release your ruby gems with ease