bump 0.6.0 → 0.10.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.
- checksums.yaml +5 -5
- data/README.md +101 -34
- data/bin/bump +27 -20
- data/lib/bump.rb +152 -53
- data/lib/bump/tasks.rb +18 -6
- metadata +22 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: edcda9c3ea370efa0927b59c72718d997c204026139349f9c3ed8a5d62b688d8
|
4
|
+
data.tar.gz: c866f3dd937aad196d1bc1204115698f4f28ebc027abdca2ea07ded1ede4ef3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d911a104915b66431136fece97b24853b039bddde41f30839a95d104647280e108f567da9359f2740b37d625ad81941a4fbf64a5e9c8914475bb95b86e21ecff
|
7
|
+
data.tar.gz: 2ca0ed62d336d9db203a7ee864498e14e8eab70316179ae92649803a426d2a6f75f1349a9c5d5ecf5ccb9b9431004f7a05d2b7edbb854512f2ea62408c682632
|
data/README.md
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
[](https://travis-ci.org/gregorym/bump)
|
2
2
|
[](http://badge.fury.io/rb/bump)
|
3
3
|
|
4
|
-
|
5
|
-
Bump is a gem that will simplify the way you build gems and chef-cookbooks.
|
4
|
+
A gem to bump versions of gems and chef-cookbooks.
|
6
5
|
|
6
|
+
- bumps version major / minor / patch / pre
|
7
|
+
- bundles
|
8
|
+
- commits changes
|
7
9
|
|
8
10
|
# Installation
|
9
11
|
|
@@ -11,58 +13,116 @@ Bump is a gem that will simplify the way you build gems and chef-cookbooks.
|
|
11
13
|
|
12
14
|
# Usage
|
13
15
|
|
14
|
-
|
16
|
+
### Show current version
|
15
17
|
|
16
18
|
bump current
|
17
19
|
|
18
|
-
|
20
|
+
> 0.1.2
|
19
21
|
|
20
|
-
Bump (major, minor, patch, pre)
|
22
|
+
### Bump (major, minor, patch, pre)
|
21
23
|
|
22
24
|
bump patch
|
23
25
|
|
24
|
-
Bump version 0.1.2 to 0.1.3
|
26
|
+
> Bump version 0.1.2 to 0.1.3
|
25
27
|
|
26
|
-
###
|
28
|
+
### Show next version
|
29
|
+
|
30
|
+
bump show-next patch
|
31
|
+
|
32
|
+
> 0.1.3
|
33
|
+
|
34
|
+
### Show version file path
|
35
|
+
|
36
|
+
bump file
|
37
|
+
|
38
|
+
> lib/foo/version.rb
|
39
|
+
|
40
|
+
## Options
|
41
|
+
|
42
|
+
### `--no-commit`
|
43
|
+
|
44
|
+
Do not commit after bumping.
|
27
45
|
|
28
|
-
### --no-commit
|
29
|
-
If you don't want to make a commit after bumping, add the `--no-commit` option.
|
30
|
-
|
31
46
|
bump patch --no-commit
|
32
47
|
|
33
|
-
###
|
34
|
-
|
48
|
+
### `--tag`
|
49
|
+
|
50
|
+
Will add a git tag like `v1.2.3` (if the current project is a git repository and `--no-commit` has not been given).
|
35
51
|
|
36
52
|
bump patch --tag
|
37
53
|
|
38
|
-
|
39
|
-
|
40
|
-
|
54
|
+
The `--tag-prefix` option can change the tag prefix:
|
55
|
+
|
56
|
+
bump patch --tag --tag-prefix v- # tag as v-1.2.3
|
57
|
+
bump patch --tag --tag-prefix "" # tag as 1.2.3
|
58
|
+
|
59
|
+
### `--no-bundle`
|
60
|
+
|
61
|
+
Do not run `bundle` command after bumping.
|
62
|
+
|
41
63
|
bump patch --no-bundle
|
42
64
|
|
43
|
-
###
|
44
|
-
|
65
|
+
### `--replace-in`
|
66
|
+
|
67
|
+
Bump the version in additional files.
|
68
|
+
|
69
|
+
bump patch --replace-in Readme.md
|
70
|
+
|
71
|
+
### `--commit-message [MSG], -m [MSG]`
|
45
72
|
|
46
|
-
|
73
|
+
Append additional information to the commit message.
|
74
|
+
|
75
|
+
bump patch --commit-message "Something extra"
|
47
76
|
|
48
77
|
or
|
49
78
|
|
50
|
-
bump patch -m
|
79
|
+
bump patch -m "Something extra"
|
80
|
+
|
81
|
+
### `--changelog`
|
82
|
+
|
83
|
+
Updates `CHANGELOG.md` when bumping.
|
84
|
+
This requires a heading (starting with `##`) that includes the previous version and a heading above that, for example:
|
85
|
+
|
86
|
+
```markdown
|
87
|
+
### Next
|
88
|
+
- Added bar
|
89
|
+
|
90
|
+
### v0.0.0 - 2019-12-24
|
91
|
+
- Added foo
|
92
|
+
```
|
93
|
+
|
94
|
+
### `--edit-changelog`
|
95
|
+
|
96
|
+
Updates CHANGELOG.md when bumping (see above), and
|
97
|
+
opens the changelog in an editor specified in `$EDITOR` (or `vi`),
|
98
|
+
then waits for the editor to be closed and continues.
|
51
99
|
|
52
|
-
|
100
|
+
```bash
|
101
|
+
EDITOR="subl -n -w" bump patch --edit-changelog
|
102
|
+
```
|
103
|
+
|
104
|
+
## Rake
|
53
105
|
|
54
|
-
```
|
106
|
+
```ruby
|
55
107
|
# Rakefile
|
56
108
|
require "bump/tasks"
|
57
109
|
|
58
110
|
#
|
59
|
-
#
|
60
|
-
# Bump.tag_by_default =
|
111
|
+
# do not always tag the version
|
112
|
+
# Bump.tag_by_default = false
|
61
113
|
#
|
62
|
-
|
114
|
+
# bump the version in additional files
|
115
|
+
# Bump.replace_in_default = ["Readme.md"]
|
116
|
+
#
|
117
|
+
# Maintain changelog:
|
118
|
+
# Bump.changelog = true
|
119
|
+
# Opens the changelog in an editor when bumping
|
120
|
+
# Bump.changelog = :editor
|
63
121
|
```
|
64
|
-
|
122
|
+
|
65
123
|
rake bump:current # display current version
|
124
|
+
rake bump:show-next INCREMENT=minor # display next minor version
|
125
|
+
rake bump:file # display version file path
|
66
126
|
|
67
127
|
# bumping using defaults for `COMMIT`, `TAG`, and `BUNDLE`
|
68
128
|
rake bump:major
|
@@ -72,25 +132,32 @@ require "bump/tasks"
|
|
72
132
|
|
73
133
|
# bumping with option(s)
|
74
134
|
rake bump:patch TAG=false BUNDLE=false # commit, but don't tag or run `bundle`
|
135
|
+
rake bump:patch TAG=true TAG_PREFIX=v- # tag with a prefix 'v-' ex. the tag will look like v-0.0.1
|
75
136
|
rake bump:patch COMMIT=false TAG=false # don't commit, don't tag
|
76
137
|
rake bump:minor BUNDLE=false # don't run `bundle`
|
77
138
|
|
78
|
-
|
79
|
-
|
139
|
+
## Ruby
|
140
|
+
|
141
|
+
```ruby
|
80
142
|
require "bump"
|
81
143
|
Bump::Bump.current # -> "1.2.3"
|
144
|
+
Bump::Bump.next_version("patch") # -> "1.2.4"
|
145
|
+
Bump::Bump.file # -> "lib/foo/version.rb"
|
82
146
|
Bump::Bump.run("patch") # -> version changed
|
147
|
+
Bump::Bump.run("patch", tag: true, tag_prefix: 'v-') # -> version changed with tagging with '-v' as prefix
|
83
148
|
Bump::Bump.run("patch", commit: false, bundle:false, tag:false) # -> version changed with options
|
84
149
|
Bump::Bump.run("patch", commit_message: '[no ci]') # -> creates a commit message with 'v1.2.3 [no ci]' instead of default: 'v1.2.3'
|
85
150
|
```
|
86
151
|
|
87
152
|
# Supported locations
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
153
|
+
|
154
|
+
- `VERSION` file with `1.2.3`
|
155
|
+
- `gemspec` with `gem.version = "1.2.3"` or `Gem:Specification.new "gem-name", "1.2.3" do`
|
156
|
+
- `lib/**/version.rb` file with `VERSION = "1.2.3"`
|
157
|
+
- `metadata.rb` with `version "1.2.3"`
|
158
|
+
- `VERSION = "1.2.3"` in `lib/**/*.rb`
|
93
159
|
|
94
160
|
# Author
|
95
|
-
|
96
|
-
|
161
|
+
|
162
|
+
Gregory<br>
|
163
|
+
License: MIT
|
data/bin/bump
CHANGED
@@ -1,36 +1,43 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
require 'optparse'
|
5
|
+
require 'shellwords'
|
3
6
|
|
4
7
|
options = {}
|
5
8
|
OptionParser.new do |opts|
|
6
|
-
opts.banner =
|
7
|
-
Bump your gem version.
|
9
|
+
opts.banner = <<-BANNER.gsub(/^ /, "")
|
10
|
+
Bump your gem version.
|
8
11
|
|
9
|
-
Usage:
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
Usage:
|
13
|
+
bump current # show current version
|
14
|
+
bump show-next INCREMENT # show next (pre|patch|minor|major) version of your gem
|
15
|
+
bump file # show version file path
|
16
|
+
bump pre # increase prerelease version of your gem (1.0.0-X) [alpha, beta, rc, ]
|
17
|
+
bump patch # increase patch version of your gem (1.0.X)
|
18
|
+
bump minor # increase minor version of your gem (1.X.0)
|
19
|
+
bump major # increase major version of your gem (X.0.0)
|
20
|
+
bump set 1.2.3 # set the version number to the given value
|
16
21
|
|
17
|
-
Options:
|
18
|
-
BANNER
|
22
|
+
Options:
|
23
|
+
BANNER
|
19
24
|
opts.on("--no-commit", "Do not make a commit.") { options[:commit] = false }
|
20
|
-
opts.on("-m","--commit-message
|
25
|
+
opts.on("-m", "--commit-message MSG", String, "Append MSG to the commit message.") { |msg| options[:commit_message] = msg }
|
21
26
|
opts.on("--no-bundle", "Do not bundle.") { options[:bundle] = false }
|
22
27
|
opts.on("--tag", "Create git tag from version (only if commit is true).") { options[:tag] = true }
|
23
|
-
opts.on("-
|
28
|
+
opts.on("--tag-prefix TAG_PREFIX", "Prefix the tag with this string, ex. 'v'") { |tag_prefix| options[:tag_prefix] = tag_prefix }
|
29
|
+
opts.on("--replace-in FILE", String, "Replace old version with the new version additionally in this file") { |f| (options[:replace_in] ||= []) << f }
|
30
|
+
opts.on("--changelog", "Update CHANGELOG.md") { options[:changelog] = true }
|
31
|
+
opts.on("--edit-changelog", "Use $EDITOR to open changelog before committing, e.g. 'subl -n -w' or 'nano'.") { options[:changelog] = :editor }
|
32
|
+
opts.on("--value-only", "Do not prefix the output with any descriptive text") { options[:value_only] = true }
|
33
|
+
opts.on("-h", "--help", "Show this.") { puts opts; exit }
|
24
34
|
end.parse!
|
25
35
|
|
26
|
-
|
27
|
-
|
28
|
-
exit 1
|
29
|
-
end
|
36
|
+
valid_argv = ["set", "show-next"].include?(ARGV.first) ? 2 : 1
|
37
|
+
abort "Usage instructions: bump --help" unless ARGV.size == valid_argv
|
30
38
|
|
31
|
-
if ARGV
|
32
|
-
|
33
|
-
end
|
39
|
+
options[:version] = ARGV[1] if ARGV[0] == "set"
|
40
|
+
options[:increment] = ARGV[1] if ARGV[0] == "show-next"
|
34
41
|
|
35
42
|
require File.dirname(__FILE__) + '/../lib/bump'
|
36
43
|
output, status = Bump::Bump.run(ARGV.first, options)
|
data/lib/bump.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Bump
|
4
|
+
class InvalidIncrementError < StandardError; end
|
2
5
|
class InvalidOptionError < StandardError; end
|
3
6
|
class InvalidVersionError < StandardError; end
|
4
7
|
class UnfoundVersionError < StandardError; end
|
@@ -7,39 +10,52 @@ module Bump
|
|
7
10
|
class RakeArgumentsDeprecatedError < StandardError; end
|
8
11
|
|
9
12
|
class <<self
|
10
|
-
attr_accessor :tag_by_default
|
13
|
+
attr_accessor :tag_by_default, :replace_in_default, :changelog
|
11
14
|
end
|
12
15
|
|
13
16
|
class Bump
|
14
|
-
BUMPS =
|
15
|
-
PRERELEASE = ["alpha","beta","rc",nil]
|
16
|
-
OPTIONS = BUMPS | ["set", "current"]
|
17
|
-
VERSION_REGEX = /(\d+\.\d+\.\d+(?:-(?:#{PRERELEASE.compact.join('|')}))?)
|
17
|
+
BUMPS = ["major", "minor", "patch", "pre"].freeze
|
18
|
+
PRERELEASE = ["alpha", "beta", "rc", nil].freeze
|
19
|
+
OPTIONS = BUMPS | ["set", "current", "file"]
|
20
|
+
VERSION_REGEX = /(\d+\.\d+\.\d+(?:-(?:#{PRERELEASE.compact.join('|')}))?)/.freeze
|
18
21
|
|
19
22
|
class << self
|
20
|
-
|
21
23
|
def defaults
|
22
24
|
{
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
25
|
+
tag: ::Bump.tag_by_default,
|
26
|
+
tag_prefix: 'v',
|
27
|
+
commit: true,
|
28
|
+
changelog: ::Bump.changelog || false, # TODO: default to true with opt-out once it gets more stable
|
29
|
+
bundle: File.exist?("Gemfile"),
|
30
|
+
replace_in: ::Bump.replace_in_default || []
|
26
31
|
}
|
27
32
|
end
|
28
33
|
|
29
|
-
def run(bump, options={})
|
34
|
+
def run(bump, options = {})
|
30
35
|
options = defaults.merge(options)
|
36
|
+
options[:commit] = false unless File.directory?(".git")
|
31
37
|
|
32
38
|
case bump
|
33
39
|
when *BUMPS
|
34
40
|
bump_part(bump, options)
|
35
41
|
when "set"
|
36
42
|
raise InvalidVersionError unless options[:version]
|
43
|
+
|
37
44
|
bump_set(options[:version], options)
|
38
45
|
when "current"
|
39
|
-
[
|
46
|
+
[current, 0]
|
47
|
+
when "show-next"
|
48
|
+
increment = options[:increment]
|
49
|
+
raise InvalidIncrementError unless BUMPS.include?(increment)
|
50
|
+
|
51
|
+
[next_version(increment), 0]
|
52
|
+
when "file"
|
53
|
+
[file, 0]
|
40
54
|
else
|
41
55
|
raise InvalidOptionError
|
42
56
|
end
|
57
|
+
rescue InvalidIncrementError
|
58
|
+
["Invalid increment. Choose between #{BUMPS.join(',')}.", 1]
|
43
59
|
rescue InvalidOptionError
|
44
60
|
["Invalid option. Choose between #{OPTIONS.join(',')}.", 1]
|
45
61
|
rescue InvalidVersionError
|
@@ -56,11 +72,40 @@ module Bump
|
|
56
72
|
current_info.first
|
57
73
|
end
|
58
74
|
|
75
|
+
def next_version(increment, current = Bump.current)
|
76
|
+
current, prerelease = current.split('-')
|
77
|
+
major, minor, patch, *other = current.split('.')
|
78
|
+
case increment
|
79
|
+
when "major"
|
80
|
+
major = major.succ
|
81
|
+
minor = 0
|
82
|
+
patch = 0
|
83
|
+
prerelease = nil
|
84
|
+
when "minor"
|
85
|
+
minor = minor.succ
|
86
|
+
patch = 0
|
87
|
+
prerelease = nil
|
88
|
+
when "patch"
|
89
|
+
patch = patch.succ
|
90
|
+
when "pre"
|
91
|
+
prerelease.strip! if prerelease.respond_to? :strip
|
92
|
+
prerelease = PRERELEASE[PRERELEASE.index(prerelease).succ % PRERELEASE.length]
|
93
|
+
else
|
94
|
+
raise InvalidIncrementError
|
95
|
+
end
|
96
|
+
version = [major, minor, patch, *other].compact.join('.')
|
97
|
+
[version, prerelease].compact.join('-')
|
98
|
+
end
|
99
|
+
|
100
|
+
def file
|
101
|
+
current_info.last
|
102
|
+
end
|
103
|
+
|
59
104
|
def parse_cli_options!(options)
|
60
105
|
options.each do |key, value|
|
61
106
|
options[key] = parse_cli_options_value(value)
|
62
107
|
end
|
63
|
-
options.delete_if{|
|
108
|
+
options.delete_if { |_key, value| value.nil? }
|
64
109
|
end
|
65
110
|
|
66
111
|
private
|
@@ -76,27 +121,62 @@ module Bump
|
|
76
121
|
end
|
77
122
|
|
78
123
|
def bump(file, current, next_version, options)
|
79
|
-
|
80
|
-
|
124
|
+
# bump in files that need to change
|
125
|
+
[file, *options[:replace_in]].each do |f|
|
126
|
+
return ["Unable to find version #{current} in #{f}", 1] unless replace f, current, next_version
|
127
|
+
|
128
|
+
git_add f if options[:commit]
|
129
|
+
end
|
130
|
+
|
131
|
+
# bundle if needed
|
132
|
+
if options[:bundle] && Dir.glob('*.gemspec').any? && under_version_control?("Gemfile.lock")
|
81
133
|
bundler_with_clean_env do
|
82
134
|
return ["Bundle error", 1] unless system("bundle")
|
135
|
+
|
136
|
+
git_add "Gemfile.lock" if options[:commit]
|
83
137
|
end
|
84
138
|
end
|
85
|
-
|
86
|
-
|
139
|
+
|
140
|
+
# changelog if needed
|
141
|
+
if options[:changelog]
|
142
|
+
log = Dir["CHANGELOG.md"].first
|
143
|
+
return ["Did not find CHANGELOG.md", 1] unless log
|
144
|
+
|
145
|
+
error = bump_changelog(log, next_version)
|
146
|
+
return [error, 1] if error
|
147
|
+
|
148
|
+
open_changelog(log) if options[:changelog] == :editor
|
149
|
+
|
150
|
+
git_add log if options[:commit]
|
151
|
+
end
|
152
|
+
|
153
|
+
# commit staged changes
|
154
|
+
commit next_version, options if options[:commit]
|
155
|
+
|
156
|
+
# tell user the result
|
157
|
+
[next_version, 0]
|
158
|
+
end
|
159
|
+
|
160
|
+
def open_changelog(log)
|
161
|
+
editor = ENV['EDITOR'] || "vi"
|
162
|
+
system "#{editor} #{log}"
|
87
163
|
end
|
88
164
|
|
89
165
|
def bundler_with_clean_env(&block)
|
90
166
|
if defined?(Bundler)
|
91
|
-
Bundler.
|
167
|
+
if Bundler.respond_to?(:with_unbundled_env)
|
168
|
+
Bundler.with_unbundled_env(&block)
|
169
|
+
else
|
170
|
+
Bundler.with_clean_env(&block)
|
171
|
+
end
|
92
172
|
else
|
93
173
|
yield
|
94
174
|
end
|
95
175
|
end
|
96
176
|
|
97
|
-
def bump_part(
|
177
|
+
def bump_part(increment, options)
|
98
178
|
current, file = current_info
|
99
|
-
next_version = next_version(
|
179
|
+
next_version = next_version(increment, current)
|
100
180
|
bump(file, current, next_version, options)
|
101
181
|
end
|
102
182
|
|
@@ -105,20 +185,49 @@ module Bump
|
|
105
185
|
bump(file, current, next_version, options)
|
106
186
|
end
|
107
187
|
|
188
|
+
def bump_changelog(file, current)
|
189
|
+
parts = File.read(file).split(/(^##+.*)/) # headlines and their content
|
190
|
+
prev_index = parts.index { |p| p =~ /(^##+.*(\d+\.\d+\.\d+(\.[a-z]+)?).*)/ } # position of previous version
|
191
|
+
return "Unable to find previous version in CHANGELOG.md" unless prev_index
|
192
|
+
|
193
|
+
# reuse the same style by just swapping the numbers
|
194
|
+
new_heading = parts[prev_index].sub($2, current)
|
195
|
+
# add current date if previous heading used that
|
196
|
+
new_heading.sub!(/\d\d\d\d-\d\d-\d\d/, Time.now.strftime('%Y-%m-%d'))
|
197
|
+
|
198
|
+
if prev_index < 2
|
199
|
+
# previous version is first '##' element (no '## Next' present), add line feed after version to avoid
|
200
|
+
# '## v1.0.1## v1.0.0'
|
201
|
+
parts.insert prev_index - 1, new_heading + "\n"
|
202
|
+
else
|
203
|
+
# put our new heading underneath the "Next" heading, which should be above the last version
|
204
|
+
parts.insert prev_index - 1, "\n" + new_heading
|
205
|
+
end
|
206
|
+
|
207
|
+
File.write file, parts.join("")
|
208
|
+
nil
|
209
|
+
end
|
210
|
+
|
108
211
|
def commit_message(version, options)
|
109
|
-
|
212
|
+
tag = "#{options[:tag_prefix]}#{version}"
|
213
|
+
options[:commit_message] ? "#{tag} #{options[:commit_message]}" : tag
|
110
214
|
end
|
111
215
|
|
112
|
-
def commit(version,
|
113
|
-
|
114
|
-
system("git
|
115
|
-
system("git
|
116
|
-
|
216
|
+
def commit(version, options)
|
217
|
+
tag = "#{options[:tag_prefix]}#{version}"
|
218
|
+
system("git", "commit", "-m", commit_message(version, options))
|
219
|
+
system("git", "tag", "-a", "-m", "Bump to #{tag}", tag) if options[:tag]
|
220
|
+
end
|
221
|
+
|
222
|
+
def git_add(file)
|
223
|
+
system("git", "add", "--update", file)
|
117
224
|
end
|
118
225
|
|
119
226
|
def replace(file, old, new)
|
120
227
|
content = File.read(file)
|
121
|
-
|
228
|
+
return unless content.sub!(old, new)
|
229
|
+
|
230
|
+
File.write(file, content)
|
122
231
|
end
|
123
232
|
|
124
233
|
def current_info
|
@@ -126,18 +235,25 @@ module Bump
|
|
126
235
|
version_from_version ||
|
127
236
|
version_from_version_rb ||
|
128
237
|
version_from_gemspec ||
|
129
|
-
version_from_lib_rb
|
130
|
-
version_from_chef
|
238
|
+
version_from_lib_rb ||
|
239
|
+
version_from_chef ||
|
131
240
|
raise(UnfoundVersionFileError)
|
132
241
|
)
|
133
242
|
raise UnfoundVersionError unless version
|
243
|
+
|
134
244
|
[version, file]
|
135
245
|
end
|
136
246
|
|
137
247
|
def version_from_gemspec
|
138
|
-
return unless file
|
139
|
-
|
140
|
-
|
248
|
+
return unless file = find_version_file("*.gemspec")
|
249
|
+
|
250
|
+
content = File.read(file)
|
251
|
+
version = (
|
252
|
+
content[/\.version\s*=\s*["']#{VERSION_REGEX}["']/, 1] ||
|
253
|
+
File.read(file)[/Gem::Specification.new.+ ["']#{VERSION_REGEX}["']/, 1]
|
254
|
+
)
|
255
|
+
return unless version
|
256
|
+
|
141
257
|
[version, file]
|
142
258
|
end
|
143
259
|
|
@@ -152,6 +268,7 @@ module Bump
|
|
152
268
|
|
153
269
|
def version_from_version
|
154
270
|
return unless file = find_version_file("VERSION")
|
271
|
+
|
155
272
|
extract_version_from_file(file)
|
156
273
|
end
|
157
274
|
|
@@ -160,17 +277,19 @@ module Bump
|
|
160
277
|
file = files.detect do |f|
|
161
278
|
File.read(f) =~ /^\s+VERSION = ['"](#{VERSION_REGEX})['"]/i
|
162
279
|
end
|
163
|
-
[
|
280
|
+
[Regexp.last_match(1), file] if file
|
164
281
|
end
|
165
282
|
|
166
283
|
def version_from_chef
|
167
284
|
file = find_version_file("metadata.rb")
|
168
285
|
return unless file && File.read(file) =~ /^version\s+(['"])(#{VERSION_REGEX})['"]/
|
169
|
-
|
286
|
+
|
287
|
+
[Regexp.last_match(2), file]
|
170
288
|
end
|
171
289
|
|
172
290
|
def extract_version_from_file(file)
|
173
291
|
return unless version = File.read(file)[VERSION_REGEX]
|
292
|
+
|
174
293
|
[version, file]
|
175
294
|
end
|
176
295
|
|
@@ -184,26 +303,6 @@ module Bump
|
|
184
303
|
end
|
185
304
|
end
|
186
305
|
|
187
|
-
def next_version(current, part)
|
188
|
-
current, prerelease = current.split('-')
|
189
|
-
major, minor, patch, *other = current.split('.')
|
190
|
-
case part
|
191
|
-
when "major"
|
192
|
-
major, minor, patch, prerelease = major.succ, 0, 0, nil
|
193
|
-
when "minor"
|
194
|
-
minor, patch, prerelease = minor.succ, 0, nil
|
195
|
-
when "patch"
|
196
|
-
patch = patch.succ
|
197
|
-
when "pre"
|
198
|
-
prerelease.strip! if prerelease.respond_to? :strip
|
199
|
-
prerelease = PRERELEASE[PRERELEASE.index(prerelease).succ % PRERELEASE.length]
|
200
|
-
else
|
201
|
-
raise "unknown part #{part.inspect}"
|
202
|
-
end
|
203
|
-
version = [major, minor, patch, *other].compact.join('.')
|
204
|
-
[version, prerelease].compact.join('-')
|
205
|
-
end
|
206
|
-
|
207
306
|
def under_version_control?(file)
|
208
307
|
@all_files ||= `git ls-files`.split(/\r?\n/)
|
209
308
|
@all_files.include?(file)
|
data/lib/bump/tasks.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "bump"
|
2
4
|
|
3
5
|
namespace :bump do
|
@@ -7,20 +9,30 @@ namespace :bump do
|
|
7
9
|
abort unless status == 0
|
8
10
|
end
|
9
11
|
|
10
|
-
(Bump::Bump::BUMPS + ["current"]).each do |bump|
|
12
|
+
(Bump::Bump::BUMPS + ["current", "file", "show-next"]).each do |bump|
|
11
13
|
if bump == "current"
|
12
14
|
desc "Show current gem version"
|
15
|
+
elsif bump == "show-next"
|
16
|
+
desc "Show next #{Bump::Bump::BUMPS.join('|')} version."
|
17
|
+
elsif bump == "file"
|
18
|
+
desc "Show version file path"
|
13
19
|
else
|
14
20
|
desc "Bump #{bump} part of gem version"
|
15
21
|
end
|
16
22
|
|
17
|
-
task bump, :
|
18
|
-
|
19
|
-
|
23
|
+
task bump, :no_args do |_task, args|
|
24
|
+
if args.no_args
|
25
|
+
raise(
|
26
|
+
RakeArgumentsDeprecatedError,
|
27
|
+
"rake arguments are deprecated, use TAG=false to disable tagging"
|
28
|
+
)
|
29
|
+
end
|
20
30
|
options = {
|
21
31
|
tag: ENV['TAG'],
|
32
|
+
tag_prefix: ENV['TAG_PREFIX'],
|
22
33
|
commit: ENV['COMMIT'],
|
23
|
-
bundle: ENV['BUNDLE']
|
34
|
+
bundle: ENV['BUNDLE'],
|
35
|
+
increment: ENV['INCREMENT']
|
24
36
|
}
|
25
37
|
run_bump.call(bump, Bump::Bump.parse_cli_options!(options))
|
26
38
|
end
|
@@ -28,6 +40,6 @@ namespace :bump do
|
|
28
40
|
|
29
41
|
desc "Sets the version number using the VERSION environment variable"
|
30
42
|
task :set do
|
31
|
-
run_bump.call("set", :
|
43
|
+
run_bump.call("set", version: ENV['VERSION'])
|
32
44
|
end
|
33
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bump
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregory Marcilhacy
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,7 +52,21 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description:
|
56
70
|
email: g.marcilhacy@gmail.com
|
57
71
|
executables:
|
58
72
|
- bump
|
@@ -67,7 +81,7 @@ homepage: https://github.com/gregorym/bump
|
|
67
81
|
licenses:
|
68
82
|
- MIT
|
69
83
|
metadata: {}
|
70
|
-
post_install_message:
|
84
|
+
post_install_message:
|
71
85
|
rdoc_options: []
|
72
86
|
require_paths:
|
73
87
|
- lib
|
@@ -75,16 +89,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
75
89
|
requirements:
|
76
90
|
- - ">="
|
77
91
|
- !ruby/object:Gem::Version
|
78
|
-
version:
|
92
|
+
version: 2.3.0
|
79
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
94
|
requirements:
|
81
95
|
- - ">="
|
82
96
|
- !ruby/object:Gem::Version
|
83
97
|
version: '0'
|
84
98
|
requirements: []
|
85
|
-
|
86
|
-
|
87
|
-
signing_key:
|
99
|
+
rubygems_version: 3.1.2
|
100
|
+
signing_key:
|
88
101
|
specification_version: 4
|
89
102
|
summary: Bump your gem version file
|
90
103
|
test_files: []
|