version 0.10.0 → 1.0.0a
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/README.rdoc +10 -11
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/rake/version_task.rb +20 -7
- data/lib/version.rb +36 -26
- data/lib/version/component.rb +5 -1
- data/spec/version_spec.rb +118 -10
- metadata +5 -5
data/README.rdoc
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
= Version
|
2
2
|
|
3
3
|
* http://github.com/stouset/version
|
4
|
-
* http://rdoc.info/
|
5
|
-
* http://getcaliper.com/caliper/project?repo=git%3A%2F%2Fgithub.com%2Fstouset%2Fversion.git
|
4
|
+
* http://rdoc.info/gems/version/
|
6
5
|
* http://atlruby.org/stouset/posts/138-version-task
|
7
6
|
|
8
7
|
== Description
|
@@ -38,11 +37,11 @@ You're all set up.
|
|
38
37
|
$ rake version:bump # => 0.1.1
|
39
38
|
$ rake version:bump:minor # => 0.2.0
|
40
39
|
$ rake version:bump:revision # => 0.2.1
|
41
|
-
$ rake version:bump:pre # => 0.2.
|
40
|
+
$ rake version:bump:pre # => 0.2.2a
|
42
41
|
$ rake version:bump # => 0.2.2
|
43
42
|
$ rake version:bump:major # => 1.0.0
|
44
|
-
$ rake version:bump:minor # => 1.0
|
45
|
-
$ cat VERSION # => 1.0
|
43
|
+
$ rake version:bump:minor # => 1.1.0
|
44
|
+
$ cat VERSION # => 1.1.0
|
46
45
|
|
47
46
|
The VersionTask can automatically manage git tagging for
|
48
47
|
you, too.
|
@@ -93,12 +92,12 @@ library. It's simple to use, but I'll be surprised if there's much point
|
|
93
92
|
beyond doing the legwork for the Rake task and class versioning.
|
94
93
|
|
95
94
|
v = "1.2.0".to_version
|
96
|
-
v.to_s
|
97
|
-
v.bump!
|
98
|
-
v.bump!(:major)
|
99
|
-
v.bump!(:minor, true) # => 1
|
100
|
-
v.major =
|
101
|
-
v.to_a
|
95
|
+
v.to_s # => 1.2.0
|
96
|
+
v.bump! # => 1.2.1
|
97
|
+
v.bump!(:major) # => 2.0.0
|
98
|
+
v.bump!(:minor, false, true) # => 2.1
|
99
|
+
v.major = 3 # => 3.0
|
100
|
+
v.to_a # => ['3', '0']
|
102
101
|
|
103
102
|
== Install
|
104
103
|
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0a
|
data/lib/rake/version_task.rb
CHANGED
@@ -59,7 +59,7 @@ class Rake::VersionTask < Rake::TaskLib
|
|
59
59
|
|
60
60
|
file filename
|
61
61
|
|
62
|
-
desc
|
62
|
+
desc "Print the current version number (#{read})"
|
63
63
|
task(:version => filename) { puts read }
|
64
64
|
|
65
65
|
namespace :version do
|
@@ -69,21 +69,32 @@ class Rake::VersionTask < Rake::TaskLib
|
|
69
69
|
puts write(version)
|
70
70
|
end
|
71
71
|
|
72
|
-
desc
|
72
|
+
desc "Bump to #{read.bump!}"
|
73
73
|
task(:bump => filename) { puts write(read.bump!) }
|
74
74
|
|
75
75
|
namespace :bump do
|
76
|
-
desc
|
76
|
+
desc "Bump to #{read.bump!(:major)}"
|
77
77
|
task(:major => filename) { puts write(read.bump!(:major)) }
|
78
78
|
|
79
|
-
desc
|
79
|
+
desc "Bump to #{read.bump!(:minor)}"
|
80
80
|
task(:minor => filename) { puts write(read.bump!(:minor)) }
|
81
81
|
|
82
|
-
desc
|
82
|
+
desc "Bump to #{read.bump!(:revision)}"
|
83
83
|
task(:revision => filename) { puts write(read.bump!(:revision)) }
|
84
84
|
|
85
|
-
desc
|
85
|
+
desc "Bump to #{read.bump!(:pre)}"
|
86
86
|
task(:pre => filename) { puts write(read.bump!(:pre)) }
|
87
|
+
|
88
|
+
namespace :pre do
|
89
|
+
desc "Bump to #{read.bump!(:major, true)}"
|
90
|
+
task(:major => filename) { puts write(read.bump!(:major, true)) }
|
91
|
+
|
92
|
+
desc "Bump to #{read.bump!(:minor, true)}"
|
93
|
+
task(:minor => filename) { puts write(read.bump!(:minor, true)) }
|
94
|
+
|
95
|
+
desc "Bump to #{read.bump!(:revision, true)}"
|
96
|
+
task(:revision => filename) { puts write(read.bump!(:revision, true)) }
|
97
|
+
end
|
87
98
|
end
|
88
99
|
end
|
89
100
|
end
|
@@ -94,7 +105,7 @@ class Rake::VersionTask < Rake::TaskLib
|
|
94
105
|
# Returns the Version contained in the file at +filename+.
|
95
106
|
#
|
96
107
|
def read
|
97
|
-
contents = path.read
|
108
|
+
contents = path.read rescue '0.0.0'
|
98
109
|
|
99
110
|
case filetype.to_s
|
100
111
|
when '' then contents.chomp.to_version
|
@@ -106,6 +117,8 @@ class Rake::VersionTask < Rake::TaskLib
|
|
106
117
|
# Writes out +version+ to the file at +filename+ with the correct format.
|
107
118
|
#
|
108
119
|
def write(version)
|
120
|
+
return if version == read
|
121
|
+
|
109
122
|
path.open('w') do |io|
|
110
123
|
io << case filetype.to_s
|
111
124
|
when '' then version.to_s + "\n"
|
data/lib/version.rb
CHANGED
@@ -63,15 +63,8 @@ class Version
|
|
63
63
|
#++
|
64
64
|
#
|
65
65
|
[ :major, :minor, :revision ].to_enum.each.with_index do |component, i|
|
66
|
-
define_method(:"#{component}") {
|
67
|
-
define_method(:"#{component}=") {|v| self[i] = v
|
68
|
-
end
|
69
|
-
|
70
|
-
#
|
71
|
-
# Retrieves the component of the Version at +index+.
|
72
|
-
#
|
73
|
-
def [](index)
|
74
|
-
self.components[index] ? self.components[index].to_s : nil
|
66
|
+
define_method(:"#{component}") { self.components[i] ? self.components[i].to_s : nil }
|
67
|
+
define_method(:"#{component}=") {|v| self[i] = v }
|
75
68
|
end
|
76
69
|
|
77
70
|
#
|
@@ -112,28 +105,38 @@ class Version
|
|
112
105
|
end
|
113
106
|
|
114
107
|
#
|
115
|
-
# Bumps the version number. Pass +
|
116
|
-
# least-significant part. Set +
|
117
|
-
#
|
108
|
+
# Bumps the version number. Pass +component+ to bump a component other than
|
109
|
+
# the least-significant part. Set +pre+ to true if you want to bump the
|
110
|
+
# component to a prerelease version. Set +trim+ to true if you want the
|
111
|
+
# version to be resized to only large enough to contain the component set.
|
118
112
|
#
|
119
|
-
# "1.0.4a".bump!
|
120
|
-
# "1.0.4a".bump!(:pre)
|
121
|
-
# "1.0.4a".bump!(:minor, true)
|
113
|
+
# "1.0.4a".bump! # => '1.0.4'
|
114
|
+
# "1.0.4a".bump!(:pre) # => '1.0.4b'
|
115
|
+
# "1.0.4a".bump!(:minor, false, true) # => '1.1'
|
116
|
+
# "1.0.4a".bump!(:minor, true, true) # => '1.1a
|
117
|
+
# "1.0.4a".bump!(:minor, true, false) # => '1.1.0a'
|
122
118
|
#
|
123
|
-
def bump!(
|
124
|
-
case
|
125
|
-
when :major then self.bump!(0,
|
126
|
-
when :minor then self.bump!(1,
|
127
|
-
when :revision then self.bump!(2,
|
128
|
-
when :pre then self
|
119
|
+
def bump!(component = -1, pre = false, trim = false)
|
120
|
+
case component
|
121
|
+
when :major then self.bump!(0, pre, trim)
|
122
|
+
when :minor then self.bump!(1, pre, trim)
|
123
|
+
when :revision then self.bump!(2, pre, trim)
|
124
|
+
when :pre then self.bump!(-1, true, trim)
|
129
125
|
else
|
130
|
-
|
131
|
-
self
|
126
|
+
# resize to match the new length, if applicable
|
127
|
+
self.resize!(component + 1) if (trim or component >= self.length)
|
128
|
+
|
129
|
+
# mark all but the changed bit as non-prerelease
|
130
|
+
self[0...component].each(&:unprerelease!)
|
131
|
+
|
132
|
+
# I don't even understand this part any more; god help you
|
133
|
+
self[component] = self[component].next if pre and self.prerelease? and component == self.length - 1
|
134
|
+
self[component] = self[component].next unless pre and self.prerelease? and component == -1
|
135
|
+
self[-1] = self[-1].next(true) if pre
|
136
|
+
self
|
132
137
|
end
|
133
|
-
|
134
|
-
self
|
135
138
|
end
|
136
|
-
|
139
|
+
|
137
140
|
#
|
138
141
|
# Returns the current length of the version number.
|
139
142
|
#
|
@@ -197,6 +200,13 @@ class Version
|
|
197
200
|
|
198
201
|
protected
|
199
202
|
|
203
|
+
#
|
204
|
+
# Retrieves the component of the Version at +index+.
|
205
|
+
#
|
206
|
+
def [](index)
|
207
|
+
self.components[index] || Component.new('0')
|
208
|
+
end
|
209
|
+
|
200
210
|
def components
|
201
211
|
@components ||= []
|
202
212
|
end
|
data/lib/version/component.rb
CHANGED
@@ -24,6 +24,10 @@ class Version::Component
|
|
24
24
|
not self.letter.empty?
|
25
25
|
end
|
26
26
|
|
27
|
+
def unprerelease!
|
28
|
+
self.next! if self.prerelease?
|
29
|
+
end
|
30
|
+
|
27
31
|
def next(pre = false)
|
28
32
|
self.dup.next!(pre)
|
29
33
|
end
|
@@ -31,7 +35,7 @@ class Version::Component
|
|
31
35
|
def next!(pre = false)
|
32
36
|
case
|
33
37
|
when ( pre and self.prerelease?) then self.letter.next!
|
34
|
-
when ( pre and not self.prerelease?) then self.letter = 'a'
|
38
|
+
when ( pre and not self.prerelease?) then self.letter = 'a'
|
35
39
|
when (not pre and self.prerelease?) then self.letter = ''
|
36
40
|
when (not pre and not self.prerelease?) then self.digits = self.digits.next
|
37
41
|
end
|
data/spec/version_spec.rb
CHANGED
@@ -20,6 +20,10 @@ describe Version do
|
|
20
20
|
its(:revision) { should be_nil }
|
21
21
|
its(:prerelease?) { should be_false }
|
22
22
|
|
23
|
+
it 'should bump to 2.10' do
|
24
|
+
subject.bump!.should == v2_10
|
25
|
+
end
|
26
|
+
|
23
27
|
it 'should major-bump to 3.0' do
|
24
28
|
subject.bump!(:major).should == v3_0
|
25
29
|
end
|
@@ -35,9 +39,65 @@ describe Version do
|
|
35
39
|
it 'should prerelease-bump to 2.10a' do
|
36
40
|
subject.bump!(:pre).should == v2_10a
|
37
41
|
end
|
42
|
+
|
43
|
+
it 'should prerelease-bump major to 3_0a' do
|
44
|
+
subject.bump!(:major, true).should == v3_0a
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should prerelease-bump minor to 2.10a' do
|
48
|
+
subject.bump!(:minor, true).should == v2_10a
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should prerelease-bump revision to 2.9.1a' do
|
52
|
+
subject.bump!(:revision, true).should == v2_9_1a
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe Version do
|
57
|
+
include ImplicitVersion
|
58
|
+
|
59
|
+
subject { v0_10_0 }
|
60
|
+
|
61
|
+
its(:major) { should == '0' }
|
62
|
+
its(:minor) { should == '10' }
|
63
|
+
its(:revision) { should == '0' }
|
64
|
+
its(:prerelease?) { should be_false }
|
65
|
+
|
66
|
+
it 'should bump to 0.10.1' do
|
67
|
+
subject.bump!.should == v0_10_1
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should major-bump to 1.0.0' do
|
71
|
+
subject.bump!(:major).should == v1_0_0
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should minor-bump to 0.11.0' do
|
75
|
+
subject.bump!(:minor).should == v0_11_0
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should revision-bump to 0.10.1' do
|
79
|
+
subject.bump!(:revision).should == v0_10_1
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should prerelease-bump to 0.10.1a' do
|
83
|
+
subject.bump!(:pre).should == v0_10_1a
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should prerelease-bump major to 1.0.0a' do
|
87
|
+
subject.bump!(:major, true).should == v1_0_0a
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'should prerelease-bump minor to 0.11.0a' do
|
91
|
+
subject.bump!(:minor, true).should == v0_11_0a
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'should prerelease-bump revision to 0.10.1a' do
|
95
|
+
subject.bump!(:revision, true).should == v0_10_1a
|
96
|
+
end
|
38
97
|
end
|
39
98
|
|
40
|
-
|
99
|
+
|
100
|
+
describe Version, 'with a prerelease revision' do
|
41
101
|
include ImplicitVersion
|
42
102
|
|
43
103
|
subject { v1_6_3a }
|
@@ -47,15 +107,8 @@ describe Version, 'with a prerelease version' do
|
|
47
107
|
its(:revision) { should == '3a' }
|
48
108
|
its(:prerelease?) { should be_true }
|
49
109
|
|
50
|
-
it 'should
|
51
|
-
subject
|
52
|
-
subject[1].should == '6'
|
53
|
-
subject[2].should == '3a'
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'should return nil for unset components' do
|
57
|
-
subject[3].should == nil
|
58
|
-
subject[4].should == nil
|
110
|
+
it 'should bump to 1.6.3' do
|
111
|
+
subject.bump!.should == v1_6_3
|
59
112
|
end
|
60
113
|
|
61
114
|
it 'should major-bump to 2.0.0' do
|
@@ -73,6 +126,61 @@ describe Version, 'with a prerelease version' do
|
|
73
126
|
it 'should prerelease-bump to 1.6.3b' do
|
74
127
|
subject.bump!(:pre).should == v1_6_3b
|
75
128
|
end
|
129
|
+
|
130
|
+
it 'should prerelease-bump major to 2.0.0a' do
|
131
|
+
subject.bump!(:major, true).should == v2_0_0a
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'should prerelease-bump minor to 1.7.0a' do
|
135
|
+
subject.bump!(:minor, true).should == v1_7_0a
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'should prerelease-bump revision to 1.6.4a' do
|
139
|
+
subject.bump!(:revision, true).should == v1_6_4a
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe Version, 'with a prerelease minor version' do
|
144
|
+
include ImplicitVersion
|
145
|
+
|
146
|
+
subject { v1_6a }
|
147
|
+
|
148
|
+
its(:major) { should == '1' }
|
149
|
+
its(:minor) { should == '6a' }
|
150
|
+
its(:revision) { should == nil }
|
151
|
+
its(:prerelease?) { should be_true }
|
152
|
+
|
153
|
+
it 'should bump to 1.6' do
|
154
|
+
subject.bump!.should == v1_6
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'should major-bump to 2.0' do
|
158
|
+
subject.bump!(:major).should == v2_0
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'should minor-bump to 1.6' do
|
162
|
+
subject.bump!(:minor).should == v1_6
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'should revision-bump to 1.6.1' do
|
166
|
+
subject.bump!(:revision).should == v1_6_1
|
167
|
+
end
|
168
|
+
|
169
|
+
it 'should bump to 1.6b' do
|
170
|
+
subject.bump!(:pre).should == v1_6b
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'should prerelease-bump major to 2.0a' do
|
174
|
+
subject.bump!(:major, true).should == v2_0a
|
175
|
+
end
|
176
|
+
|
177
|
+
it 'should prerelease-bump minor to 1.7a' do
|
178
|
+
subject.bump!(:minor, true).should == v1_7a
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'should prerelease-bump revision to 1.6.1a' do
|
182
|
+
subject.bump!(:revision, true).should == v1_6_1a
|
183
|
+
end
|
76
184
|
end
|
77
185
|
|
78
186
|
describe Version do
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: version
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 0.
|
4
|
+
prerelease: 5
|
5
|
+
version: 1.0.0a
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Stephen Touset
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-05-02 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -70,9 +70,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
70
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
71
|
none: false
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 1.3.1
|
76
76
|
requirements: []
|
77
77
|
|
78
78
|
rubyforge_project:
|