gem-release 0.3.1 → 0.4.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.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