raketeer 0.2.4 → 0.2.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e6ed3bd0408cc6af232b21a069ea2515d63ea1db1fc40b6d0a1c2e29fa61838
4
- data.tar.gz: 46809d4b3d4d65b62a3f4f72fc136b2393727ca871aa0321fefc64cf8cfa62c6
3
+ metadata.gz: 6ea4a060cb8e00095e9df956fa2ee5f82b62f54062a5e9a304902a82e8aed1eb
4
+ data.tar.gz: cf7681b3872489a4f6a2c7b7faad9103613c6966ddc978e3e4d151da33ee1e0b
5
5
  SHA512:
6
- metadata.gz: ffdf10d2f65ca8e0e6d9b8866c1a807749da9aa151c92d44b9f0588478f30b94008f9b100ce709b10f6ef07c1a3fbba43bc74178f0ebcf1c3d46ff8cd157e038
7
- data.tar.gz: 4052757cc76e4826759e0f1fc09b664d02ea44b63d00856f9f914ba099c97d5be1eb497e2101ebcb054d71452e31975ed36ef6f4c089b3b640c0cb62ee89ca5b
6
+ metadata.gz: 3c59023bccceb084fc6ee5aeee2de32482c5ba77c8bb7995371161dabff2e0755a572b0b676e6b4b6a1bb690d3ddb90047b79a9701712492bdbc20009dc1e629
7
+ data.tar.gz: 735a8192cdc76bb8bc9dfa9b019980a789f45bb365800725b5a482e4b212e6c5d8d5080b526c6f1969c7fc8100c6a044ad43b120a6b3b1e8d82d0b9187c75db7
data/CHANGELOG.md CHANGED
@@ -2,7 +2,14 @@
2
2
 
3
3
  Format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
- ## [[Unreleased]](https://github.com/esotericpig/raketeer/compare/v0.2.4...master)
5
+ ## [[Unreleased]](https://github.com/esotericpig/raketeer/compare/v0.2.5...master)
6
+
7
+ ## [v0.2.5] - 2019-08-02
8
+ ### Added
9
+ - Added a strict mode (regex) to BumpTask, BumpVer, FilesBumper, & SemVer
10
+
11
+ ### Fixed
12
+ - Fixed the 'Nothing written (up-to-date)' feature in BumpTask (minor)
6
13
 
7
14
  ## [v0.2.4] - 2019-08-02
8
15
  ### Added
@@ -46,9 +46,11 @@ module Raketeer
46
46
  attr_accessor :name
47
47
  attr_accessor :ruby_files # Looks for {ruby_var}
48
48
  attr_accessor :ruby_var
49
+ attr_accessor :strict
49
50
 
50
51
  alias_method :bump_bundle?,:bump_bundle
51
52
  alias_method :dry_run?,:dry_run
53
+ alias_method :strict?,:strict
52
54
 
53
55
  def initialize(name=:bump)
54
56
  super()
@@ -62,6 +64,7 @@ module Raketeer
62
64
  @name = name
63
65
  @ruby_files = Rake::FileList[File.join('lib','**','version.rb')]
64
66
  @ruby_var = 'VERSION'
67
+ @strict = false
65
68
 
66
69
  yield self if block_given?()
67
70
  define()
@@ -165,12 +168,15 @@ module Raketeer
165
168
  end
166
169
 
167
170
  def bump_bump_files(bump_ver)
168
- bumper = FilesBumper.new(@bump_files,bump_ver,@dry_run)
171
+ return nil if @bump_files.empty?()
172
+
173
+ bumper = FilesBumper.new(@bump_files,bump_ver,@dry_run,@strict)
169
174
 
170
175
  bumper.bump_files() do
171
- next if bumper.changes > 0 || bumper.line !~ SemVer::REGEX
176
+ next if bumper.changes > 0 || !bumper.sem_ver.nil?()
177
+ next if bumper.line !~ SemVer.regex(@strict)
172
178
 
173
- break if bumper.bump_line!() && bumper.bump_ver_empty?()
179
+ break if bumper.bump_line!() != :no_ver && bumper.bump_ver_empty?()
174
180
  end
175
181
 
176
182
  return bumper.version
@@ -192,28 +198,27 @@ module Raketeer
192
198
 
193
199
  # @see https://keepachangelog.com/en/1.0.0/
194
200
  def bump_changelogs(bump_ver)
195
- bumper = FilesBumper.new(@changelogs,bump_ver,@dry_run) do
201
+ return nil if @changelogs.empty?()
202
+
203
+ bumper = FilesBumper.new(@changelogs,bump_ver,@dry_run,@strict) do
196
204
  @header_bumped = false
197
205
  @unreleased_bumped = false
198
206
  end
199
207
 
200
- header_regex = /\A(\s*##\s*\[+\D*)(#{SemVer::REGEX.to_s()})(.*)\z/m
208
+ header_regex = /\A(\s*##\s*\[+\D*)(#{SemVer.regex(@strict)})(.*)\z/m
201
209
  unreleased_regex = /\A.*Unreleased.*http.*\.{3}/
202
210
 
203
211
  bumper.bump_files() do
204
212
  if @header_bumped && @unreleased_bumped
205
- if bumper.bump_ver_empty?()
206
- break
207
- else
208
- next
209
- end
213
+ break if bumper.bump_ver_empty?()
214
+ next
210
215
  end
211
216
 
212
217
  if bumper.line =~ unreleased_regex
213
218
  next if @unreleased_bumped
214
219
 
215
220
  # Match from the end, in case the URL has a number (like '%20')
216
- match = bumper.line.match(/(#{SemVer::REGEX.to_s()})(\.{3}.*)\z/m)
221
+ match = bumper.line.match(/(#{SemVer.regex(@strict)})(\.{3}.*)\z/m)
217
222
 
218
223
  next if match.nil?() || match.length < 3 || (i = match.begin(0)) < 1
219
224
 
@@ -224,12 +229,18 @@ module Raketeer
224
229
  orig_line = bumper.line.dup()
225
230
  bumper.line = match[1]
226
231
 
227
- if bumper.bump_line!(add_change: false)
232
+ if (result = bumper.bump_line!(add_change: false)) != :no_ver
233
+ @unreleased_bumped = true
234
+
235
+ if result == :same_ver
236
+ bumper.line = orig_line
237
+
238
+ next
239
+ end
240
+
228
241
  bumper.line = match[0] << bumper.line << match[2]
229
242
 
230
243
  bumper.add_change(bumper.line,push: false)
231
-
232
- @unreleased_bumped = true
233
244
  else
234
245
  bumper.line = orig_line
235
246
  end
@@ -243,7 +254,15 @@ module Raketeer
243
254
  orig_line = bumper.line.dup()
244
255
  bumper.line = match[1]
245
256
 
246
- if bumper.bump_line!(add_change: false)
257
+ if (result = bumper.bump_line!(add_change: false)) != :no_ver
258
+ @header_bumped = true
259
+
260
+ if result == :same_ver
261
+ bumper.line = orig_line
262
+
263
+ next
264
+ end
265
+
247
266
  bumper.line = match[0] << bumper.line
248
267
 
249
268
  # Replace the date with today's date for the new Markdown header, if it exists
@@ -252,8 +271,6 @@ module Raketeer
252
271
 
253
272
  bumper.add_change(bumper.line,push: true)
254
273
  bumper.line << "\n" # Don't print this newline to the console
255
-
256
- @header_bumped = true
257
274
  end
258
275
 
259
276
  # We are adding a new Markdown header, so always set the line back to its original value
@@ -265,11 +282,13 @@ module Raketeer
265
282
  end
266
283
 
267
284
  def bump_ruby_files(bump_ver)
268
- bumper = FilesBumper.new(@ruby_files,bump_ver,@dry_run)
269
- version_var_regex = /\A(\s*#{Regexp.quote(@ruby_var)}\s*=\D*)(#{SemVer::REGEX.to_s()})(.*)\z/m
285
+ return nil if @ruby_files.empty?()
286
+
287
+ bumper = FilesBumper.new(@ruby_files,bump_ver,@dry_run,@strict)
288
+ version_var_regex = /\A(\s*#{Regexp.quote(@ruby_var)}\s*=\D*)(#{SemVer.regex(@strict)})(.*)\z/m
270
289
 
271
290
  bumper.bump_files() do
272
- next if bumper.changes > 0
291
+ next if bumper.changes > 0 || !bumper.sem_ver.nil?()
273
292
  next if (match = bumper.line.match(version_var_regex)).nil?()
274
293
  next if match.length < 4
275
294
  next if match[1..2].any?() {|m| m.nil?() || m.strip().empty?()}
@@ -277,13 +296,18 @@ module Raketeer
277
296
  orig_line = bumper.line.dup()
278
297
  bumper.line = match[2]
279
298
 
280
- if bumper.bump_line!(add_change: false)
299
+ if (result = bumper.bump_line!(add_change: false)) != :no_ver
300
+ if result == :same_ver
301
+ bumper.line = orig_line
302
+
303
+ break if bumper.bump_ver_empty?()
304
+ next
305
+ end
306
+
281
307
  bumper.line = match[1] << bumper.line
282
308
  bumper.line << match[-1] unless match[-1].nil?()
283
309
 
284
310
  bumper.add_change(bumper.line,push: false)
285
-
286
- break if bumper.bump_ver_empty?()
287
311
  else
288
312
  bumper.line = orig_line
289
313
  end
@@ -111,8 +111,8 @@ module Raketeer
111
111
  return sem_ver
112
112
  end
113
113
 
114
- def bump_line!(line,sem_ver)
115
- line.sub!(REGEX,bump!(sem_ver).to_s())
114
+ def bump_line!(line,sem_ver,strict: false)
115
+ line.sub!(self.class.regex(strict),bump!(sem_ver).to_s())
116
116
 
117
117
  return line
118
118
  end
@@ -39,20 +39,23 @@ module Raketeer
39
39
  attr_accessor :line
40
40
  attr_accessor :lines
41
41
  attr_accessor :sem_ver
42
+ attr_accessor :strict
42
43
  attr_accessor :version
43
44
  attr_accessor :version_bumped # Was the version actually bumped?
44
45
 
45
46
  alias_method :bump_ver_empty?,:bump_ver_empty
46
47
  alias_method :dry_run?,:dry_run
48
+ alias_method :strict?,:strict
47
49
  alias_method :version_bumped?,:version_bumped
48
50
 
49
- def initialize(files,bump_ver,dry_run,&init_per_file)
51
+ def initialize(files,bump_ver,dry_run,strict,&init_per_file)
50
52
  @bump_ver = bump_ver
51
53
  @bump_ver_empty = bump_ver.empty?()
52
54
  @dry_run = dry_run
53
55
  @files = files.to_a()
54
56
  @init_per_file = init_per_file
55
57
  @sem_ver = nil
58
+ @strict = strict
56
59
  @version = nil
57
60
  @version_bumped = false
58
61
  end
@@ -108,22 +111,25 @@ module Raketeer
108
111
  end
109
112
  end
110
113
 
114
+ # @return [:no_ver,:same_ver,:bumped_ver]
111
115
  def bump_line!(add_change: true)
112
- @sem_ver = SemVer.parse_line(@line)
116
+ @sem_ver = SemVer.parse_line(@line,strict: @strict)
113
117
 
114
- return false if @sem_ver.nil?()
118
+ return :no_ver if @sem_ver.nil?()
115
119
 
116
120
  @version = @sem_ver if @version.nil?()
117
121
 
118
122
  if bump_ver_empty?()
119
123
  puts "= #{@sem_ver}"
120
124
 
121
- return true
125
+ return :same_ver
122
126
  else
123
127
  orig_line = @line.dup()
124
- @bump_ver.bump_line!(@line,@sem_ver)
128
+ orig_sem_ver = @sem_ver.dup()
125
129
 
126
- if @line != orig_line
130
+ @bump_ver.bump_line!(@line,@sem_ver,strict: @strict)
131
+
132
+ if @sem_ver.to_s() != orig_sem_ver.to_s()
127
133
  if !@version_bumped
128
134
  @version = @sem_ver
129
135
  @version_bumped = true
@@ -131,11 +137,15 @@ module Raketeer
131
137
 
132
138
  self.add_change(@line,push: false) if add_change
133
139
 
134
- return true
140
+ return :bumped_ver
141
+ else
142
+ @line = orig_line
143
+
144
+ return :same_ver
135
145
  end
136
146
  end
137
147
 
138
- return false
148
+ return :no_ver
139
149
  end
140
150
  end
141
151
  end
@@ -33,6 +33,7 @@ module Raketeer
33
33
  ###
34
34
  class SemVer
35
35
  REGEX = /\d+(\.\d+)?(\.\d+)?(\-[0-9A-Za-z\-\.]+)?(\+[0-9A-Za-z\-\.]+)?/
36
+ STRICT_REGEX = /\d+\.\d+\.\d+(\-[0-9A-Za-z\-\.]+)?(\+[0-9A-Za-z\-\.]+)?/
36
37
 
37
38
  attr_accessor :build_meta
38
39
  attr_accessor :major
@@ -95,8 +96,8 @@ module Raketeer
95
96
  return sem_ver
96
97
  end
97
98
 
98
- def self.parse_line(line)
99
- str = line[REGEX]
99
+ def self.parse_line(line,strict: false)
100
+ str = line[regex(strict)]
100
101
 
101
102
  return nil if str.nil?() || (str = str.strip()).empty?()
102
103
  return parse(str)
@@ -111,6 +112,10 @@ module Raketeer
111
112
  @version.nil?()
112
113
  end
113
114
 
115
+ def self.regex(strict=false)
116
+ return strict ? STRICT_REGEX : REGEX
117
+ end
118
+
114
119
  def to_s()
115
120
  s = ''.dup()
116
121
 
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
  module Raketeer
25
- VERSION = '0.2.4'
25
+ VERSION = '0.2.5'
26
26
 
27
27
  # @since 0.2.4
28
28
  DEP_VERSIONS = {
data/raketeer.gemspec CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new() do |spec|
33
33
  spec.licenses = ['LGPL-3.0-or-later']
34
34
  spec.homepage = 'https://github.com/esotericpig/raketeer'
35
35
  spec.summary = 'Extra Ruby Rake Tasks.'
36
- spec.description = 'Extra Ruby Rake Tasks for IRB, Nokogiri, running, etc.'
36
+ spec.description = 'Extra Ruby Rake Tasks for IRB, Nokogiri, running, bumping the version, etc.'
37
37
 
38
38
  spec.metadata = {
39
39
  'bug_tracker_uri' => 'https://github.com/esotericpig/raketeer/issues',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raketeer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Bradley Whited (@esotericpig)
@@ -66,7 +66,8 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.9'
69
- description: Extra Ruby Rake Tasks for IRB, Nokogiri, running, etc.
69
+ description: Extra Ruby Rake Tasks for IRB, Nokogiri, running, bumping the version,
70
+ etc.
70
71
  email:
71
72
  - bradley@esotericpig.com
72
73
  executables: []