version_info 1.7.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -0
- data/README.md +93 -60
- data/lib/version_info.rb +2 -2
- data/lib/version_info/version.rb +7 -7
- metadata +54 -61
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -17,6 +17,7 @@ And is very user friendly thanks to rake / thor tasks:
|
|
17
17
|
|
18
18
|
First, include VersionInfo in your main project module (or class):
|
19
19
|
|
20
|
+
```ruby
|
20
21
|
require 'version_info'
|
21
22
|
|
22
23
|
module MyProject
|
@@ -25,6 +26,7 @@ First, include VersionInfo in your main project module (or class):
|
|
25
26
|
include VersionInfo
|
26
27
|
VERSION.file_name = __FILE__
|
27
28
|
end
|
29
|
+
```
|
28
30
|
|
29
31
|
Then use rake/thor tasks:
|
30
32
|
|
@@ -34,91 +36,114 @@ Then use rake/thor tasks:
|
|
34
36
|
|
35
37
|
Please, note here VersionInfo is included *after* the constant VERSION, if you don't like this also works
|
36
38
|
|
39
|
+
```ruby
|
37
40
|
module MyProject
|
38
41
|
include VersionInfo
|
39
42
|
self.VERSION = "1.5.0"
|
40
43
|
VERSION.file_name = __FILE__
|
41
44
|
end
|
45
|
+
```
|
42
46
|
|
43
47
|
Please note here you are invoking a singleton method and not using a constant. When included VersionInfo
|
44
48
|
does a bit of magic and then you can use *both* the method and the constant:
|
45
49
|
|
50
|
+
```ruby
|
46
51
|
MyProject.VERSION # it works
|
47
52
|
MyProject::VERSION # also works
|
53
|
+
```
|
48
54
|
|
49
55
|
One more sample:
|
50
56
|
|
57
|
+
```ruby
|
51
58
|
Gem::Specification.new do |s|
|
52
|
-
s.name = "
|
53
|
-
s.version =
|
59
|
+
s.name = "my_gem"
|
60
|
+
s.version = MyGem::VERSION
|
54
61
|
s.platform = Gem::Platform::RUBY
|
62
|
+
```
|
55
63
|
|
56
64
|
After VersionInfo is included, the singleton method and the constant returns a object of class VersionInfo::Data.
|
57
65
|
You can use some methods from it, (#bump, #to_s, #tag, etc.). Also you get another singleton method to easy assignment:
|
58
66
|
|
67
|
+
```ruby
|
59
68
|
MyProject.VERSION= "2.0.2" # also works
|
69
|
+
```
|
60
70
|
|
61
71
|
#### Features
|
62
72
|
|
63
|
-
|
73
|
+
* rake & thor tasks avaiables to yaml file creation, bump segments and show info
|
64
74
|
|
65
|
-
|
75
|
+
* can define custom segments to build your version tag with the tipical structure X.X.X.X.
|
66
76
|
|
67
|
-
|
77
|
+
* can use a custom tag format: do you want a tag like "1-3-1pre"?. No problem!.
|
68
78
|
|
69
|
-
|
79
|
+
* can include any custom info in your version data.
|
70
80
|
|
71
|
-
|
81
|
+
* good rspec tests
|
72
82
|
|
73
|
-
|
74
|
-
|
75
|
-
* In a ruby source (default)
|
76
|
-
|
77
|
-
module MyProject
|
78
|
-
include VersionInfo
|
79
|
-
self.VERSION = "1.5.0"
|
80
|
-
VERSION.file_name = __FILE__ # required for this format
|
81
|
-
end
|
83
|
+
* Flexible formats for stored your version data:
|
82
84
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
85
|
+
1. Using a text file. Content of your version.rb file:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
VersionInfo.file_format= :text
|
89
|
+
module MyProject
|
90
|
+
include VersionInfo
|
91
|
+
VERSION.file_name = /some_path/your_version_file #convenient but optional for this format
|
92
|
+
end
|
93
|
+
```
|
94
|
+
|
95
|
+
The file is created "on demand". For example, you can invoke the task vinfo:show
|
96
|
+
The version data file is named by default VERSION and looks like.
|
97
|
+
|
98
|
+
```
|
99
|
+
2.2.3
|
100
|
+
author: jcangas
|
101
|
+
email: jorge.cangas@gmail.com
|
102
|
+
```
|
97
103
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
104
|
+
2. Using a yaml file, as a hash. Content of your version.rb file:
|
105
|
+
|
106
|
+
```ruby
|
107
|
+
VersionInfo.file_format= :yaml
|
108
|
+
module MyProject
|
109
|
+
include VersionInfo
|
110
|
+
VERSION.file_name = /some_path/your_file.yaml #convenient but optional for this format
|
111
|
+
end
|
112
|
+
```
|
113
|
+
|
114
|
+
The file is created "on demand". For example, you can invoke the task vinfo:show
|
115
|
+
The version data file is named by default VERSION and looks like.
|
116
|
+
|
117
|
+
```yaml
|
118
|
+
---
|
119
|
+
major: 1
|
120
|
+
minor: 1
|
121
|
+
patch: 4
|
122
|
+
author: jcangas
|
123
|
+
```
|
124
|
+
|
125
|
+
3. Using a ruby source (default). Content of your version.rb file:
|
126
|
+
|
127
|
+
```ruby
|
128
|
+
module MyProject
|
129
|
+
include VersionInfo
|
130
|
+
self.VERSION = "1.5.0"
|
131
|
+
VERSION.file_name = __FILE__ # required for this format
|
132
|
+
end
|
133
|
+
```
|
134
|
+
|
135
|
+
You write this file. and no version data file is needed: VERSION const is already here (you see it, isn't?)
|
113
136
|
|
114
137
|
|
115
138
|
Pleae, feel free to contact me about bugs/features
|
116
139
|
|
117
140
|
### Rake / Thor tasks
|
118
141
|
|
119
|
-
Put in your rake file:
|
142
|
+
Put in your rake or thor file:
|
120
143
|
|
121
|
-
|
144
|
+
```ruby
|
145
|
+
VersionInfo::install_tasks(:target => MyProject) # pass here the thing where you included VersionInfo
|
146
|
+
```
|
122
147
|
|
123
148
|
And you get a few tasks with a namespace vinfo:
|
124
149
|
|
@@ -130,10 +155,7 @@ And you get a few tasks with a namespace vinfo:
|
|
130
155
|
rake vinfo:minor # Bumps version segment MINOR
|
131
156
|
rake vinfo:patch # Bumps version segment PATCH
|
132
157
|
rake vinfo:show # Show current version tag and create version_info.yml if missing
|
133
|
-
|
134
|
-
If you prefer Thor:
|
135
|
-
|
136
|
-
VersionInfo::ThorTasks.install(:class => MyProject) # pass here the thing where you included VersionInfo
|
158
|
+
|
137
159
|
|
138
160
|
thor list
|
139
161
|
=>
|
@@ -145,45 +167,56 @@ If you prefer Thor:
|
|
145
167
|
thor vinfo:inspect # Show complete version info
|
146
168
|
thor vinfo:show # Show version tag and create version_info.yml...
|
147
169
|
|
170
|
+
Note all tasks works with any version format file!!. So is very easy to migrate for one to the other.
|
171
|
+
|
148
172
|
### Bonus: Custom segments and tag format.
|
149
173
|
|
150
174
|
You can override the default segments
|
151
175
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
176
|
+
```ruby
|
177
|
+
VersionInfo.segments = [:a, :b, :c]
|
178
|
+
module MyProject
|
179
|
+
include VersionInfo
|
180
|
+
end
|
181
|
+
```
|
156
182
|
|
157
183
|
Note this must be done **before** include VersionInfo.
|
158
184
|
|
159
185
|
Also, tag format can be redefined. VersionInfo uses simple
|
160
186
|
sprintf in order to build the tag string. Here is the code:
|
161
187
|
|
188
|
+
```ruby
|
162
189
|
def tag
|
163
190
|
tag_format % to_hash
|
164
191
|
end
|
192
|
+
```
|
165
193
|
|
166
194
|
By default, tag_format, returns a simple sprintf format string,
|
167
195
|
using the segment names, expecting their values are numbers:
|
168
196
|
|
169
|
-
|
170
|
-
|
171
|
-
|
197
|
+
```ruby
|
198
|
+
def tag_format
|
199
|
+
@tag_format ||= VersionInfo.segments.map { |k| "%<#{k}>d"}.join('.')
|
200
|
+
end
|
201
|
+
```
|
172
202
|
|
173
203
|
So tag_format return some like "%\<major\>d.%\<minor\>d%\<patch\>d".
|
174
204
|
|
175
205
|
If your VersionInfo yaml file is like:
|
176
206
|
|
207
|
+
```yaml
|
177
208
|
---
|
178
209
|
major: 2
|
179
210
|
minor: 1
|
180
211
|
patch: 53
|
181
212
|
buildflag: pre
|
213
|
+
```
|
182
214
|
|
183
|
-
You can change the tag format
|
215
|
+
You can change the tag format in this way
|
184
216
|
|
217
|
+
```ruby
|
185
218
|
MyProject::VERSION.buildflag = 'pre'
|
186
219
|
MyProject::VERSION.tag_format = MyProject::VERSION.tag_format + "--%<buildflag>s"
|
187
220
|
puts MyProject::VERSION.tag # => '2.1.53--pre'
|
188
|
-
|
221
|
+
```
|
189
222
|
|
data/lib/version_info.rb
CHANGED
@@ -17,10 +17,10 @@ module VersionInfo
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.install_tasks(options)
|
20
|
-
if defined?(
|
20
|
+
if defined?(Rake)
|
21
21
|
require 'version_info/rake_tasks'
|
22
22
|
RakeTasks.install(options)
|
23
|
-
elsif defined?(
|
23
|
+
elsif defined?(Thor)
|
24
24
|
require 'version_info/thor_tasks'
|
25
25
|
ThorTasks.install(options)
|
26
26
|
end
|
data/lib/version_info/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
|
2
|
-
module VersionInfo
|
3
|
-
VERSION = "1.7.
|
4
|
-
versionable(self)
|
5
|
-
VERSION.file_name = __FILE__
|
6
|
-
end
|
7
|
-
|
1
|
+
|
2
|
+
module VersionInfo
|
3
|
+
VERSION = "1.7.1"
|
4
|
+
versionable(self)
|
5
|
+
VERSION.file_name = __FILE__
|
6
|
+
end
|
7
|
+
|
metadata
CHANGED
@@ -1,71 +1,68 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: version_info
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.7.1
|
4
5
|
prerelease:
|
5
|
-
version: 1.7.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Jorge L. Cangas
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-15 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: bundler
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &13584876 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
24
22
|
type: :development
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: rake
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: *13584876
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &13584516 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
35
33
|
type: :development
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rspec
|
39
34
|
prerelease: false
|
40
|
-
|
35
|
+
version_requirements: *13584516
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &13584144 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
46
44
|
type: :development
|
47
|
-
version_requirements: *id003
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: test_notifier
|
50
45
|
prerelease: false
|
51
|
-
|
46
|
+
version_requirements: *13584144
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: test_notifier
|
49
|
+
requirement: &13583784 !ruby/object:Gem::Requirement
|
52
50
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version:
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
57
55
|
type: :development
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *13583784
|
58
|
+
description: Easy way to get version label, bump the segments (major, minor, patch),
|
59
|
+
and you can include custom version data
|
60
|
+
email:
|
61
61
|
- jorge.cangas@gmail.com
|
62
62
|
executables: []
|
63
|
-
|
64
63
|
extensions: []
|
65
|
-
|
66
64
|
extra_rdoc_files: []
|
67
|
-
|
68
|
-
files:
|
65
|
+
files:
|
69
66
|
- .gitignore
|
70
67
|
- .travis.yml
|
71
68
|
- Gemfile
|
@@ -91,30 +88,26 @@ files:
|
|
91
88
|
- version_info.gemspec
|
92
89
|
homepage: http://github.com/jcangas/version_info
|
93
90
|
licenses: []
|
94
|
-
|
95
91
|
post_install_message:
|
96
92
|
rdoc_options: []
|
97
|
-
|
98
|
-
require_paths:
|
93
|
+
require_paths:
|
99
94
|
- lib
|
100
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
96
|
none: false
|
102
|
-
requirements:
|
103
|
-
- -
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version:
|
106
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ! '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
102
|
none: false
|
108
|
-
requirements:
|
109
|
-
- -
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version:
|
103
|
+
requirements:
|
104
|
+
- - ! '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
112
107
|
requirements: []
|
113
|
-
|
114
108
|
rubyforge_project: version_info
|
115
|
-
rubygems_version: 1.8.
|
109
|
+
rubygems_version: 1.8.16
|
116
110
|
signing_key:
|
117
111
|
specification_version: 3
|
118
112
|
summary: A Ruby gem to manage your project version data. Rake tasks included!
|
119
113
|
test_files: []
|
120
|
-
|