thor-scmversion 1.1.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +21 -10
- data/README.md +17 -18
- data/features/bump.feature +23 -18
- data/lib/thor-scmversion.rb +2 -1
- data/lib/thor-scmversion/git_version.rb +3 -3
- data/lib/thor-scmversion/p4_version.rb +14 -10
- data/lib/thor-scmversion/scm_version.rb +4 -3
- data/spec/lib/thor-scmversion/scm_version_spec.rb +7 -2
- metadata +2 -2
data/LICENSE
CHANGED
@@ -1,13 +1,24 @@
|
|
1
|
-
|
1
|
+
Portions copyright (c) 2012 Riot Games, Inc.
|
2
|
+
Portions copyright (c) 2010 Andre Arko
|
3
|
+
Portions copyright (c) 2009 Engine Yard
|
2
4
|
|
3
|
-
|
4
|
-
you may not use this file except in compliance with the License.
|
5
|
-
You may obtain a copy of the License at
|
5
|
+
MIT License
|
6
6
|
|
7
|
-
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
8
14
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -13,13 +13,13 @@ file conflicts.
|
|
13
13
|
## Integrating into your project
|
14
14
|
|
15
15
|
Since Thor is written in Ruby, you'll need Ruby to make this work, on
|
16
|
-
your workstation and on your CI server. See http://whatisthor.com
|
16
|
+
your workstation and on your CI server. See <http://whatisthor.com/> for
|
17
17
|
more in how to use Thor.
|
18
18
|
|
19
19
|
### Get the gem
|
20
20
|
|
21
21
|
If you don't already have a Gemfile, you should probably get one. See
|
22
|
-
http://gembundler.com
|
22
|
+
<http://gembundler.com/> for more details on Bundler and Gemfiles. Not
|
23
23
|
required, but will save you a lot of hassle.
|
24
24
|
|
25
25
|
Add this line to your application's Gemfile:
|
@@ -52,22 +52,21 @@ Now when you list your thor tasks you'll see 2 new ones.
|
|
52
52
|
thor version:current # Show current SCM tagged version
|
53
53
|
|
54
54
|
Usage Examples:
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
2.1.0
|
55
|
+
|
56
|
+
$ thor version:current
|
57
|
+
1.2.1
|
58
|
+
$ thor version:bump auto
|
59
|
+
1.2.2
|
60
|
+
$ thor version:bump major
|
61
|
+
2.0.0
|
62
|
+
$ thor version:bump prerelease
|
63
|
+
2.0.1-alpha.1
|
64
|
+
$ thor version:bump prerelease
|
65
|
+
2.0.1-alpha.2
|
66
|
+
$ thor version:bump prerelease beta
|
67
|
+
2.0.1-beta.1
|
68
|
+
$ thor version:bump minor
|
69
|
+
2.1.0
|
71
70
|
|
72
71
|
### Remove your VERSION file from source control
|
73
72
|
|
data/features/bump.feature
CHANGED
@@ -5,28 +5,33 @@ Feature: Bump
|
|
5
5
|
|
6
6
|
Scenario Outline: Bumping a version
|
7
7
|
Given I have a <scm> project of version '<starting version>'
|
8
|
-
When I run `bundle exec thor version:bump <bump type>` from the temp directory
|
8
|
+
When I run `bundle exec thor version:bump <bump type> <flags>` from the temp directory
|
9
9
|
Then the version should be '<resulting version>'
|
10
10
|
And the <scm> server version should be '<resulting version>'
|
11
11
|
|
12
12
|
Examples:
|
13
|
-
| scm | starting version | bump type | resulting version |
|
14
|
-
| git | 1.0.0 | patch | 1.0.1 |
|
15
|
-
| git | 1.0.0 | minor | 1.1.0 |
|
16
|
-
| git | 1.0.0 | major | 2.0.0 |
|
17
|
-
| git | 1.1.5 | minor | 1.2.0 |
|
18
|
-
| git | 1.1.5 | major | 2.0.0 |
|
19
|
-
| git | 1.0.0 | prerelease | 1.0.1-alpha.1 |
|
20
|
-
| git | 1.0.0 | prerelease someth | 1.0.1-someth.1 |
|
21
|
-
| git | 1.0.0-alpha.1 | prerelease | 1.0.0-alpha.2 |
|
22
|
-
| git | 1.0.0-alpha.5 | prerelease beta | 1.0.0-beta.1 |
|
23
|
-
| git |
|
24
|
-
| git |
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
| p4 | 1.
|
13
|
+
| scm | starting version | bump type | resulting version | flags |
|
14
|
+
| git | 1.0.0 | patch | 1.0.1 | |
|
15
|
+
| git | 1.0.0 | minor | 1.1.0 | |
|
16
|
+
| git | 1.0.0 | major | 2.0.0 | |
|
17
|
+
| git | 1.1.5 | minor | 1.2.0 | |
|
18
|
+
| git | 1.1.5 | major | 2.0.0 | |
|
19
|
+
| git | 1.0.0 | prerelease | 1.0.1-alpha.1 | |
|
20
|
+
| git | 1.0.0 | prerelease someth | 1.0.1-someth.1 | |
|
21
|
+
| git | 1.0.0-alpha.1 | prerelease | 1.0.0-alpha.2 | |
|
22
|
+
| git | 1.0.0-alpha.5 | prerelease beta | 1.0.0-beta.1 | |
|
23
|
+
| git | 1.0.0-alpha.5 | auto | 1.0.0-alpha.6 | -d prerelease |
|
24
|
+
| git | 1.0.0 | build | 1.0.0+build.2 | |
|
25
|
+
| git | 1.0.0-alpha.3 | build | 1.0.0-alpha.3+build.2 | |
|
26
|
+
| git | 1.0.0 | auto | 1.0.1 | --default patch |
|
27
|
+
| git | 1.0.0 | auto | 1.0.1 | -d patch |
|
28
|
+
| git | 1.0.0 | auto | 1.0.0+build.2 | |
|
29
|
+
| p4 | 1.0.0 | patch | 1.0.1 | |
|
30
|
+
| p4 | 1.0.0 | minor | 1.1.0 | |
|
31
|
+
| p4 | 1.0.0 | major | 2.0.0 | |
|
32
|
+
| p4 | 1.1.5 | minor | 1.2.0 | |
|
33
|
+
| p4 | 1.1.5 | major | 2.0.0 | |
|
34
|
+
|
30
35
|
|
31
36
|
Scenario: Bumping a patch version in Git when the server has an advanced version not yet fetched
|
32
37
|
Given I have a git project of version '1.0.0'
|
data/lib/thor-scmversion.rb
CHANGED
@@ -13,8 +13,9 @@ module ThorSCMVersion
|
|
13
13
|
namespace "version"
|
14
14
|
|
15
15
|
desc "bump TYPE [PRERELEASE_TYPE]", "Bump version number (type is major, minor, patch, prerelease or auto)"
|
16
|
+
method_option :default, type: :string, aliases: "-d"
|
16
17
|
def bump(type, prerelease_type = nil)
|
17
|
-
current_version.bump! type, prerelease_type
|
18
|
+
current_version.bump! type, options.merge(prerelease_type: prerelease_type)
|
18
19
|
begin
|
19
20
|
say "Creating and pushing tags", :yellow
|
20
21
|
current_version.tag
|
@@ -22,7 +22,7 @@ module ThorSCMVersion
|
|
22
22
|
end
|
23
23
|
|
24
24
|
# Check the commit messages to see what type of bump is required
|
25
|
-
def auto_bump
|
25
|
+
def auto_bump(options)
|
26
26
|
last_tag = self.class.from_path.to_s
|
27
27
|
logs = ShellUtils.sh "git log --abbrev-commit --format=oneline #{last_tag}.."
|
28
28
|
guess = if logs =~ /\[major\]|\#major/i
|
@@ -35,9 +35,9 @@ module ThorSCMVersion
|
|
35
35
|
elsif logs =~ /\[patch\]|\#patch/i
|
36
36
|
:patch
|
37
37
|
else
|
38
|
-
:build
|
38
|
+
options[:default] or :build
|
39
39
|
end
|
40
|
-
bump!(guess, prerelease_type)
|
40
|
+
bump!(guess, prerelease_type: prerelease_type)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -1,4 +1,10 @@
|
|
1
1
|
module ThorSCMVersion
|
2
|
+
class << self
|
3
|
+
def windows?
|
4
|
+
RbConfig::CONFIG["arch"] =~ /cygwin|mswin|mingw|bccwin|wince|emx/
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
2
8
|
class MissingP4ConfigException < StandardError
|
3
9
|
def initialize(config_option)
|
4
10
|
@config_option = config_option
|
@@ -65,11 +71,13 @@ module ThorSCMVersion
|
|
65
71
|
end
|
66
72
|
|
67
73
|
def depot_path(path)
|
68
|
-
|
74
|
+
path = File.expand_path(path)
|
75
|
+
path = path.gsub(File::Separator, File::ALT_SEPARATOR) if ThorSCMVersion.windows?
|
76
|
+
`p4 where "#{path}/..."`.split(" ").first.gsub("/...", "")
|
69
77
|
end
|
70
78
|
|
71
79
|
def module_name(path)
|
72
|
-
|
80
|
+
depot_path(path).gsub("//", "").gsub("/", "-")
|
73
81
|
end
|
74
82
|
|
75
83
|
def parse_label(label, p4_module_name)
|
@@ -97,14 +105,14 @@ module ThorSCMVersion
|
|
97
105
|
end
|
98
106
|
|
99
107
|
def tag
|
100
|
-
if windows?
|
101
|
-
`type #{File.expand_path(get_p4_label_file).gsub(File::Separator, File::ALT_SEPARATOR)} | p4 label -i`
|
108
|
+
if ThorSCMVersion.windows?
|
109
|
+
`type "#{File.expand_path(get_p4_label_file).gsub(File::Separator, File::ALT_SEPARATOR)}" | p4 label -i`
|
102
110
|
else
|
103
|
-
`cat #{File.expand_path(get_p4_label_file)} | p4 label -i`
|
111
|
+
`cat "#{File.expand_path(get_p4_label_file)}" | p4 label -i`
|
104
112
|
end
|
105
113
|
end
|
106
114
|
|
107
|
-
def auto_bump
|
115
|
+
def auto_bump(options)
|
108
116
|
# TODO: actually implement this
|
109
117
|
bump!(:patch)
|
110
118
|
end
|
@@ -143,9 +151,5 @@ View:
|
|
143
151
|
file
|
144
152
|
end
|
145
153
|
end
|
146
|
-
|
147
|
-
def windows?
|
148
|
-
RbConfig::CONFIG["arch"] =~ /cygwin|mswin|mingw|bccwin|wince|emx/
|
149
|
-
end
|
150
154
|
end
|
151
155
|
end
|
@@ -73,10 +73,10 @@ module ThorSCMVersion
|
|
73
73
|
# @param [Symbol] type Type of bump to be performed
|
74
74
|
# @param [String] prerelease_type Type of prerelease to bump to when doing a :prerelease bump
|
75
75
|
# @return [ScmVersion]
|
76
|
-
def bump!(type,
|
76
|
+
def bump!(type, options = {})
|
77
77
|
case type.to_sym
|
78
78
|
when :auto
|
79
|
-
self.auto_bump
|
79
|
+
self.auto_bump(options)
|
80
80
|
when :major
|
81
81
|
self.major += 1
|
82
82
|
when :minor
|
@@ -84,6 +84,7 @@ module ThorSCMVersion
|
|
84
84
|
when :patch
|
85
85
|
self.patch += 1
|
86
86
|
when :prerelease
|
87
|
+
prerelease_type = options[:prerelease_type]
|
87
88
|
if self.prerelease
|
88
89
|
if prerelease_type.nil? || prerelease_type == self.prerelease.type
|
89
90
|
self.prerelease += 1
|
@@ -148,7 +149,7 @@ module ThorSCMVersion
|
|
148
149
|
|
149
150
|
# Perform a bump by reading recent commit messages in the SCM
|
150
151
|
# Abstract method. Must be implemented by subclasses.
|
151
|
-
def auto_bump(
|
152
|
+
def auto_bump(options)
|
152
153
|
raise NotImplementedError
|
153
154
|
end
|
154
155
|
|
@@ -28,14 +28,19 @@ module ThorSCMVersion
|
|
28
28
|
it 'patch' do
|
29
29
|
subject.bump!(:patch).to_s.should == '1.2.4'
|
30
30
|
end
|
31
|
+
describe 'auto' do
|
32
|
+
it "should respect a default level of bump" do
|
33
|
+
subject.bump!(:auto, default: :patch).to_s.should == '1.2.4'
|
34
|
+
end
|
35
|
+
end
|
31
36
|
describe 'prerelease' do
|
32
37
|
describe 'with explicit type' do
|
33
38
|
it do
|
34
|
-
subject.bump!(:prerelease, 'someth').to_s.should == '1.2.3-someth.1'
|
39
|
+
subject.bump!(:prerelease, prerelease_type: 'someth').to_s.should == '1.2.3-someth.1'
|
35
40
|
end
|
36
41
|
it 'with no prerelease on previous version' do
|
37
42
|
subject.prerelease = nil
|
38
|
-
subject.bump!(:prerelease, 'someth').to_s.should == '1.2.4-someth.1'
|
43
|
+
subject.bump!(:prerelease, prerelease_type: 'someth').to_s.should == '1.2.4-someth.1'
|
39
44
|
end
|
40
45
|
end
|
41
46
|
describe 'with default type' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thor-scmversion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-04-09 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: thor
|