raketeer 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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: []