kettle-dev 2.0.5 → 2.0.7
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +55 -1
- data/CONTRIBUTING.md +17 -1
- data/README.md +124 -323
- data/exe/kettle-changelog +3 -1
- data/exe/kettle-commit-msg +3 -3
- data/exe/kettle-dev-setup +4 -4
- data/exe/kettle-dvcs +1 -1
- data/exe/kettle-gh-release +1 -1
- data/exe/kettle-pre-release +2 -2
- data/exe/kettle-readme-backers +1 -1
- data/exe/kettle-release +1 -1
- data/lib/kettle/dev/changelog_cli.rb +15 -30
- data/lib/kettle/dev/ci_helpers.rb +5 -5
- data/lib/kettle/dev/ci_monitor.rb +8 -8
- data/lib/kettle/dev/commit_msg.rb +2 -2
- data/lib/kettle/dev/dvcs_cli.rb +8 -8
- data/lib/kettle/dev/gem_spec_reader.rb +8 -8
- data/lib/kettle/dev/git_adapter.rb +17 -17
- data/lib/kettle/dev/git_commit_footer.rb +3 -3
- data/lib/kettle/dev/open_collective_config.rb +1 -1
- data/lib/kettle/dev/pre_release_cli.rb +7 -7
- data/lib/kettle/dev/rakelib/appraisal.rake +1 -1
- data/lib/kettle/dev/readme_backers.rb +15 -16
- data/lib/kettle/dev/release_cli.rb +15 -15
- data/lib/kettle/dev/tasks/ci_task.rb +15 -14
- data/lib/kettle/dev/version.rb +1 -1
- data/lib/kettle/dev/versioning.rb +18 -3
- data/lib/kettle/dev.rb +3 -3
- data/lib/kettle-dev.rb +1 -1
- data.tar.gz.sig +1 -2
- metadata +8 -8
- metadata.gz.sig +0 -0
|
@@ -102,7 +102,7 @@ module Kettle
|
|
|
102
102
|
urls = []
|
|
103
103
|
|
|
104
104
|
# Inline image syntax
|
|
105
|
-
text.scan(/!\[[^\]]*\]\(([^\s)]+)(?:\s
|
|
105
|
+
text.scan(/!\[[^\]]*\]\(([^\s)]+)(?:\s+"[^"]*")?\)/) { |m| urls << m[0] }
|
|
106
106
|
|
|
107
107
|
# Reference definitions
|
|
108
108
|
ref_defs = {}
|
|
@@ -116,8 +116,8 @@ module Kettle
|
|
|
116
116
|
end
|
|
117
117
|
|
|
118
118
|
# HTML <img src="...">
|
|
119
|
-
text.scan(/<img\b[^>]*\bsrc\s*=\s
|
|
120
|
-
text.scan(/<img\b[^>]*\bsrc\s*=\s
|
|
119
|
+
text.scan(/<img\b[^>]*\bsrc\s*=\s*"([^"]+)"[^>]*>/i) { |m| urls << m[0] }
|
|
120
|
+
text.scan(/<img\b[^>]*\bsrc\s*=\s*'([^']+)'[^>]*>/i) { |m| urls << m[0] }
|
|
121
121
|
|
|
122
122
|
urls.reject! { |u| u.nil? || u.strip.empty? }
|
|
123
123
|
urls.select! { |u| u =~ %r{^https?://}i }
|
|
@@ -132,7 +132,7 @@ module Kettle
|
|
|
132
132
|
urls = files.flat_map do |f|
|
|
133
133
|
begin
|
|
134
134
|
extract_image_urls_from_text(File.read(f))
|
|
135
|
-
rescue
|
|
135
|
+
rescue => e
|
|
136
136
|
warn("[kettle-pre-release] Could not read #{Kettle::Dev.display_path(f)}: #{e.class}: #{e.message}")
|
|
137
137
|
[]
|
|
138
138
|
end
|
|
@@ -178,7 +178,7 @@ module Kettle
|
|
|
178
178
|
files.each do |file|
|
|
179
179
|
begin
|
|
180
180
|
original = File.read(file)
|
|
181
|
-
rescue
|
|
181
|
+
rescue => e
|
|
182
182
|
warn("[kettle-pre-release] Could not read #{Kettle::Dev.display_path(file)}: #{e.class}: #{e.message}")
|
|
183
183
|
next
|
|
184
184
|
end
|
|
@@ -206,7 +206,7 @@ module Kettle
|
|
|
206
206
|
begin
|
|
207
207
|
File.write(file, updated)
|
|
208
208
|
changed << file
|
|
209
|
-
rescue
|
|
209
|
+
rescue => e
|
|
210
210
|
warn("[kettle-pre-release] Could not write #{Kettle::Dev.display_path(file)}: #{e.class}: #{e.message}")
|
|
211
211
|
end
|
|
212
212
|
end
|
|
@@ -222,7 +222,7 @@ module Kettle
|
|
|
222
222
|
puts "[kettle-pre-release] Check 2: Validate Markdown image links (HTTP HEAD)"
|
|
223
223
|
urls = [
|
|
224
224
|
Markdown.extract_image_urls_from_files("**/*.md"),
|
|
225
|
-
Markdown.extract_image_urls_from_files("**/*.md.example")
|
|
225
|
+
Markdown.extract_image_urls_from_files("**/*.md.example")
|
|
226
226
|
].flatten.uniq
|
|
227
227
|
puts "[kettle-pre-release] Found #{urls.size} unique image URL(s)."
|
|
228
228
|
failures = []
|
|
@@ -76,10 +76,10 @@ module Kettle
|
|
|
76
76
|
else
|
|
77
77
|
"https://github.com/organizations/YOUR_ORG/settings/secrets/actions"
|
|
78
78
|
end
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
warn "ERROR: README_UPDATER_TOKEN is not set."
|
|
80
|
+
warn "Please create an organization-level Actions secret named README_UPDATER_TOKEN at:"
|
|
81
|
+
warn " #{org_url}"
|
|
82
|
+
warn "Then update the workflow to reference it, or provide README_UPDATER_TOKEN in the environment."
|
|
83
83
|
raise 'Missing ENV["README_UPDATER_TOKEN"]'
|
|
84
84
|
end
|
|
85
85
|
nil
|
|
@@ -250,7 +250,7 @@ module Kettle
|
|
|
250
250
|
from_yml = from_yml.to_s if from_yml
|
|
251
251
|
return from_yml unless from_yml.nil? || from_yml.strip.empty?
|
|
252
252
|
end
|
|
253
|
-
rescue
|
|
253
|
+
rescue => e
|
|
254
254
|
Kettle::Dev.debug_error(e, __method__)
|
|
255
255
|
end
|
|
256
256
|
end
|
|
@@ -265,7 +265,7 @@ module Kettle
|
|
|
265
265
|
individuals_start: "<!-- #{base}-INDIVIDUALS:START -->",
|
|
266
266
|
individuals_end: "<!-- #{base}-INDIVIDUALS:END -->",
|
|
267
267
|
orgs_start: "<!-- #{base}-ORGANIZATIONS:START -->",
|
|
268
|
-
orgs_end: "<!-- #{base}-ORGANIZATIONS:END -->"
|
|
268
|
+
orgs_end: "<!-- #{base}-ORGANIZATIONS:END -->"
|
|
269
269
|
}
|
|
270
270
|
end
|
|
271
271
|
|
|
@@ -301,7 +301,7 @@ module Kettle
|
|
|
301
301
|
warn("Error parsing #{api_path} JSON: #{e.message}")
|
|
302
302
|
debug_log("Body that failed to parse (truncated 500): #{response&.body.to_s[0, 500]}")
|
|
303
303
|
[]
|
|
304
|
-
rescue
|
|
304
|
+
rescue => e
|
|
305
305
|
warn("Error fetching #{api_path}: #{e.class}: #{e.message}")
|
|
306
306
|
debug_log(e.backtrace.join("\n"))
|
|
307
307
|
[]
|
|
@@ -378,7 +378,7 @@ module Kettle
|
|
|
378
378
|
website: (h["website"].to_s.strip.empty? ? nil : h["website"]),
|
|
379
379
|
profile: (h["profile"].to_s.strip.empty? ? nil : h["profile"]),
|
|
380
380
|
oc_type: oc_type,
|
|
381
|
-
oc_index: oc_index
|
|
381
|
+
oc_index: oc_index
|
|
382
382
|
)
|
|
383
383
|
end
|
|
384
384
|
end
|
|
@@ -427,7 +427,7 @@ module Kettle
|
|
|
427
427
|
name: m.name,
|
|
428
428
|
image: m.image,
|
|
429
429
|
website: m.website,
|
|
430
|
-
profile: m.profile
|
|
430
|
+
profile: m.profile
|
|
431
431
|
)
|
|
432
432
|
end
|
|
433
433
|
# Build a single, well-formed block per tier with deterministic spacing:
|
|
@@ -437,7 +437,7 @@ module Kettle
|
|
|
437
437
|
block = [
|
|
438
438
|
"### Open Collective for #{tier}",
|
|
439
439
|
"",
|
|
440
|
-
generate_markdown(members_plain, empty_message: "", default_name: tier)
|
|
440
|
+
generate_markdown(members_plain, empty_message: "", default_name: tier)
|
|
441
441
|
].join("\n")
|
|
442
442
|
blocks << block
|
|
443
443
|
end
|
|
@@ -497,17 +497,17 @@ module Kettle
|
|
|
497
497
|
block = content[(start_index + start_tag.length)...end_index]
|
|
498
498
|
identities = Set.new
|
|
499
499
|
# 1) Image-style link wrappers: [](HREF)
|
|
500
|
-
block.to_s.scan(/\[!\[[^\]]*\]\([
|
|
500
|
+
block.to_s.scan(/\[!\[[^\]]*\]\([^)]*\)\]\(([^)]+)\)/) do |m|
|
|
501
501
|
href = (m[0] || "").strip
|
|
502
502
|
identities << href.downcase unless href.empty?
|
|
503
503
|
end
|
|
504
504
|
# 2) Capture ALT text from image-style wrappers for name identity
|
|
505
|
-
block.to_s.scan(/\[!\[([^\]]*)\]\([
|
|
505
|
+
block.to_s.scan(/\[!\[([^\]]*)\]\([^)]*\)\]\([^)]*\)/) do |m|
|
|
506
506
|
alt = (m[0] || "").strip
|
|
507
507
|
identities << alt.downcase unless alt.empty?
|
|
508
508
|
end
|
|
509
509
|
# 3) Plain markdown links: [TEXT](HREF)
|
|
510
|
-
block.to_s.scan(/\[([^!][^\]]*)\]\(([
|
|
510
|
+
block.to_s.scan(/\[([^!][^\]]*)\]\(([^)]+)\)/) do |m|
|
|
511
511
|
text = (m[0] || "").strip
|
|
512
512
|
href = (m[1] || "").strip
|
|
513
513
|
identities << href.downcase unless href.empty?
|
|
@@ -610,8 +610,7 @@ module Kettle
|
|
|
610
610
|
handle = github_handle_from_urls(m.profile, m.website)
|
|
611
611
|
return "@#{handle}" if handle
|
|
612
612
|
|
|
613
|
-
|
|
614
|
-
name
|
|
613
|
+
(m.name && !m.name.strip.empty?) ? m.name.strip : default_name
|
|
615
614
|
end
|
|
616
615
|
|
|
617
616
|
def github_handle_from_urls(*urls)
|
|
@@ -667,7 +666,7 @@ module Kettle
|
|
|
667
666
|
from_yml = from_yml.to_s if from_yml
|
|
668
667
|
return from_yml unless from_yml.nil? || from_yml.strip.empty?
|
|
669
668
|
end
|
|
670
|
-
rescue
|
|
669
|
+
rescue => e
|
|
671
670
|
Kettle::Dev.debug_error(e, __method__)
|
|
672
671
|
end
|
|
673
672
|
end
|
|
@@ -96,7 +96,7 @@ module Kettle
|
|
|
96
96
|
begin
|
|
97
97
|
gem_name = detect_gem_name
|
|
98
98
|
latest_overall, latest_for_series = latest_released_versions(gem_name, version)
|
|
99
|
-
rescue
|
|
99
|
+
rescue => e
|
|
100
100
|
warn("[kettle-release] gem.coop release check failed: #{e.class}: #{e.message}")
|
|
101
101
|
warn(e.backtrace.first(3).map { |l| " " + l }.join("\n")) if ENV["KETTLE_DEV_DEBUG"]
|
|
102
102
|
warn("Proceeding without gem.coop latest version info.")
|
|
@@ -167,14 +167,14 @@ module Kettle
|
|
|
167
167
|
# Ensure README KLOC badge reflects current CHANGELOG coverage denominator
|
|
168
168
|
begin
|
|
169
169
|
update_readme_kloc_badge!
|
|
170
|
-
rescue
|
|
170
|
+
rescue => e
|
|
171
171
|
warn("Failed to update KLOC badge in README: #{e.class}: #{e.message}")
|
|
172
172
|
end
|
|
173
173
|
|
|
174
174
|
# Update Rakefile.example header banner with current version and date
|
|
175
175
|
begin
|
|
176
176
|
update_rakefile_example_header!(version)
|
|
177
|
-
rescue
|
|
177
|
+
rescue => e
|
|
178
178
|
warn("Failed to update Rakefile.example header: #{e.class}: #{e.message}")
|
|
179
179
|
end
|
|
180
180
|
end
|
|
@@ -297,7 +297,7 @@ module Kettle
|
|
|
297
297
|
version ||= detect_version
|
|
298
298
|
gem_name = detect_gem_name
|
|
299
299
|
puts "\n🚀 Release #{gem_name} v#{version} Complete 🚀"
|
|
300
|
-
rescue
|
|
300
|
+
rescue => e
|
|
301
301
|
Kettle::Dev.debug_error(e, __method__)
|
|
302
302
|
# Fallback if detection fails for any reason
|
|
303
303
|
puts "\n🚀 Release v#{version || "unknown"} Complete 🚀"
|
|
@@ -414,7 +414,7 @@ module Kettle
|
|
|
414
414
|
next unless /copyright/i.match?(line)
|
|
415
415
|
|
|
416
416
|
# Expand ranges first (supports hyphen-minus and en dash)
|
|
417
|
-
line.scan(/\b(19\d{2}|20\d{2})\s*[
|
|
417
|
+
line.scan(/\b(19\d{2}|20\d{2})\s*[-–]\s*(19\d{2}|20\d{2})\b/).each do |a, b|
|
|
418
418
|
s = a.to_i
|
|
419
419
|
e = b.to_i
|
|
420
420
|
if e < s
|
|
@@ -466,7 +466,7 @@ module Kettle
|
|
|
466
466
|
next line
|
|
467
467
|
end
|
|
468
468
|
|
|
469
|
-
m = line.match(/\A(?<pre>.*?copyright[^0-9]*)(?<years>(?:\b(?:19|20)\d{2}\b(?:\s*[
|
|
469
|
+
m = line.match(/\A(?<pre>.*?copyright[^0-9]*)(?<years>(?:\b(?:19|20)\d{2}\b(?:\s*[-–]\s*\b(?:19|20)\d{2}\b)?)(?:\s*,\s*\b(?:19|20)\d{2}\b(?:\s*[-–]\s*\b(?:19|20)\d{2}\b)?)*)(?<post>.*)\z/i)
|
|
470
470
|
unless m
|
|
471
471
|
next line
|
|
472
472
|
end
|
|
@@ -491,7 +491,7 @@ module Kettle
|
|
|
491
491
|
end
|
|
492
492
|
|
|
493
493
|
# Capture three parts: prefix up to first year, the year blob, and the rest
|
|
494
|
-
m = line.match(/\A(?<pre>.*?copyright[^0-9]*)(?<years>(?:\b(?:19|20)\d{2}\b(?:\s*[
|
|
494
|
+
m = line.match(/\A(?<pre>.*?copyright[^0-9]*)(?<years>(?:\b(?:19|20)\d{2}\b(?:\s*[-–]\s*\b(?:19|20)\d{2}\b)?)(?:\s*,\s*\b(?:19|20)\d{2}\b(?:\s*[-–]\s*\b(?:19|20)\d{2}\b)?)*)(?<post>.*)\z/i)
|
|
495
495
|
unless m
|
|
496
496
|
# No parsable year sequence on this line; leave as-is
|
|
497
497
|
next line
|
|
@@ -500,7 +500,7 @@ module Kettle
|
|
|
500
500
|
years_blob = m[:years]
|
|
501
501
|
# Reuse extraction logic on just the years blob
|
|
502
502
|
years = []
|
|
503
|
-
years_blob.scan(/\b(19\d{2}|20\d{2})\s*[
|
|
503
|
+
years_blob.scan(/\b(19\d{2}|20\d{2})\s*[-–]\s*(19\d{2}|20\d{2})\b/).each do |a, b|
|
|
504
504
|
s = a.to_i
|
|
505
505
|
e = b.to_i
|
|
506
506
|
s, e = e, s if e < s
|
|
@@ -567,7 +567,7 @@ module Kettle
|
|
|
567
567
|
|
|
568
568
|
act_ok = begin
|
|
569
569
|
system("act", "--version", out: File::NULL, err: File::NULL)
|
|
570
|
-
rescue
|
|
570
|
+
rescue => e
|
|
571
571
|
Kettle::Dev.debug_error(e, __method__)
|
|
572
572
|
false
|
|
573
573
|
end
|
|
@@ -648,7 +648,7 @@ module Kettle
|
|
|
648
648
|
series_versions = gversions.select { |gv| gv.segments[0, 2] == series }
|
|
649
649
|
latest_series = series_versions.last&.to_s
|
|
650
650
|
[latest_overall, latest_series]
|
|
651
|
-
rescue
|
|
651
|
+
rescue => e
|
|
652
652
|
Kettle::Dev.debug_error(e, __method__)
|
|
653
653
|
[nil, nil]
|
|
654
654
|
end
|
|
@@ -957,7 +957,7 @@ module Kettle
|
|
|
957
957
|
pkg = File.join(@root, "pkg")
|
|
958
958
|
pattern = File.join(pkg, "*.gem")
|
|
959
959
|
gems = Dir[pattern].select { |p| File.basename(p).include?("-#{version}.gem") }
|
|
960
|
-
gems.
|
|
960
|
+
gems.max
|
|
961
961
|
end
|
|
962
962
|
|
|
963
963
|
def compute_sha256(path)
|
|
@@ -1042,7 +1042,7 @@ module Kettle
|
|
|
1042
1042
|
compare_ref = compare_ref&.end_with?("\n") ? compare_ref : (compare_ref && compare_ref + "\n")
|
|
1043
1043
|
tag_ref = tag_ref&.end_with?("\n") ? tag_ref : (tag_ref && tag_ref + "\n")
|
|
1044
1044
|
[section, compare_ref, tag_ref]
|
|
1045
|
-
rescue
|
|
1045
|
+
rescue => e
|
|
1046
1046
|
warn("Failed to parse CHANGELOG.md: #{e.class}: #{e.message}")
|
|
1047
1047
|
[nil, nil, nil]
|
|
1048
1048
|
end
|
|
@@ -1063,7 +1063,7 @@ module Kettle
|
|
|
1063
1063
|
# Normalize: trim trailing whitespace but keep internal formatting
|
|
1064
1064
|
block = block.lstrip # drop leading newline/space
|
|
1065
1065
|
block.rstrip
|
|
1066
|
-
rescue
|
|
1066
|
+
rescue => e
|
|
1067
1067
|
warn("[kettle-release] Failed to extract release notes footer from FUNDING.md: #{e.class}: #{e.message}")
|
|
1068
1068
|
nil
|
|
1069
1069
|
end
|
|
@@ -1081,7 +1081,7 @@ module Kettle
|
|
|
1081
1081
|
name: title,
|
|
1082
1082
|
body: body,
|
|
1083
1083
|
draft: false,
|
|
1084
|
-
prerelease: false
|
|
1084
|
+
prerelease: false
|
|
1085
1085
|
})
|
|
1086
1086
|
|
|
1087
1087
|
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
|
@@ -1099,7 +1099,7 @@ module Kettle
|
|
|
1099
1099
|
[false, "HTTP #{res.code}: #{res.body}"]
|
|
1100
1100
|
end
|
|
1101
1101
|
end
|
|
1102
|
-
rescue
|
|
1102
|
+
rescue => e
|
|
1103
1103
|
[false, "#{e.class}: #{e.message}"]
|
|
1104
1104
|
end
|
|
1105
1105
|
end
|
|
@@ -84,7 +84,7 @@ module Kettle
|
|
|
84
84
|
else
|
|
85
85
|
puts "GHA status: request failed (#{res.code})"
|
|
86
86
|
end
|
|
87
|
-
rescue
|
|
87
|
+
rescue => e
|
|
88
88
|
puts "GHA status: error #{e.class}: #{e.message}"
|
|
89
89
|
end
|
|
90
90
|
end
|
|
@@ -130,7 +130,7 @@ module Kettle
|
|
|
130
130
|
else
|
|
131
131
|
puts "Latest GL (#{branch}) pipeline: none"
|
|
132
132
|
end
|
|
133
|
-
rescue
|
|
133
|
+
rescue => e
|
|
134
134
|
puts "GL status: error #{e.class}: #{e.message}"
|
|
135
135
|
end
|
|
136
136
|
end
|
|
@@ -174,7 +174,6 @@ module Kettle
|
|
|
174
174
|
end
|
|
175
175
|
|
|
176
176
|
# Interactive menu
|
|
177
|
-
require "thread"
|
|
178
177
|
tty = $stdout.tty?
|
|
179
178
|
options = mapping.to_a + dynamic_files.map { |f| [f, f] }
|
|
180
179
|
quit_code = "q"
|
|
@@ -190,14 +189,14 @@ module Kettle
|
|
|
190
189
|
upstream = begin
|
|
191
190
|
out, status = Open3.capture2("git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}")
|
|
192
191
|
status.success? ? out.strip : nil
|
|
193
|
-
rescue
|
|
192
|
+
rescue => e
|
|
194
193
|
Kettle::Dev.debug_error(e, __method__)
|
|
195
194
|
nil
|
|
196
195
|
end
|
|
197
196
|
sha = begin
|
|
198
197
|
out, status = Open3.capture2("git", "rev-parse", "--short", "HEAD")
|
|
199
198
|
status.success? ? out.strip : nil
|
|
200
|
-
rescue
|
|
199
|
+
rescue => e
|
|
201
200
|
Kettle::Dev.debug_error(e, __method__)
|
|
202
201
|
nil
|
|
203
202
|
end
|
|
@@ -235,7 +234,7 @@ module Kettle
|
|
|
235
234
|
end
|
|
236
235
|
end
|
|
237
236
|
end
|
|
238
|
-
rescue
|
|
237
|
+
rescue => e
|
|
239
238
|
Kettle::Dev.debug_error(e, __method__)
|
|
240
239
|
end
|
|
241
240
|
|
|
@@ -263,18 +262,20 @@ module Kettle
|
|
|
263
262
|
sleep(0.2)
|
|
264
263
|
|
|
265
264
|
selected = nil
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
input_thread = Thread.new do # rubocop:disable ThreadSafety/NewThread
|
|
265
|
+
input_thread = nil
|
|
266
|
+
read_input = proc do
|
|
269
267
|
begin
|
|
270
268
|
selected = Kettle::Dev::InputAdapter.gets&.strip
|
|
271
269
|
rescue StandardError, SystemExit, Interrupt => error
|
|
272
|
-
|
|
273
|
-
# NOTE: look into refactoring to minimize potential SystemExit.
|
|
274
|
-
puts "Error in background thread: #{error.class}: #{error.message}" if Kettle::Dev::DEBUGGING
|
|
270
|
+
puts "Error reading input: #{error.class}: #{error.message}" if Kettle::Dev::DEBUGGING
|
|
275
271
|
selected = :input_error
|
|
276
272
|
end
|
|
277
273
|
end
|
|
274
|
+
if tty
|
|
275
|
+
input_thread = Thread.new(&read_input) # rubocop:disable ThreadSafety/NewThread
|
|
276
|
+
else
|
|
277
|
+
read_input.call
|
|
278
|
+
end
|
|
278
279
|
|
|
279
280
|
status_q = Queue.new
|
|
280
281
|
workers = []
|
|
@@ -381,12 +382,12 @@ module Kettle
|
|
|
381
382
|
|
|
382
383
|
begin
|
|
383
384
|
workers.each { |t| t.kill if t&.alive? }
|
|
384
|
-
rescue
|
|
385
|
+
rescue => e
|
|
385
386
|
Kettle::Dev.debug_error(e, __method__)
|
|
386
387
|
end
|
|
387
388
|
begin
|
|
388
389
|
input_thread.kill if input_thread&.alive?
|
|
389
|
-
rescue
|
|
390
|
+
rescue => e
|
|
390
391
|
Kettle::Dev.debug_error(e, __method__)
|
|
391
392
|
end
|
|
392
393
|
|
data/lib/kettle/dev/version.rb
CHANGED
|
@@ -6,12 +6,13 @@ module Kettle
|
|
|
6
6
|
module Versioning
|
|
7
7
|
module_function
|
|
8
8
|
|
|
9
|
-
# Detects a unique VERSION constant declared under lib/**/version.rb
|
|
9
|
+
# Detects a unique VERSION constant declared under lib/**/version.rb,
|
|
10
|
+
# or in K_CHANGELOG_VERSION_FILE when a monorepo/root changelog needs
|
|
11
|
+
# to point at a representative package version file.
|
|
10
12
|
# @param root [String] project root
|
|
11
13
|
# @return [String] version string
|
|
12
14
|
def detect_version(root)
|
|
13
|
-
candidates =
|
|
14
|
-
abort!("Could not find version.rb under lib/**.") if candidates.empty?
|
|
15
|
+
candidates = version_file_candidates(root)
|
|
15
16
|
versions = candidates.map do |path|
|
|
16
17
|
content = File.read(path)
|
|
17
18
|
m = content.match(/VERSION\s*=\s*(["'])([^"']+)\1/)
|
|
@@ -24,6 +25,20 @@ module Kettle
|
|
|
24
25
|
versions.first
|
|
25
26
|
end
|
|
26
27
|
|
|
28
|
+
def version_file_candidates(root)
|
|
29
|
+
override = ENV.fetch("K_CHANGELOG_VERSION_FILE", "").to_s.strip
|
|
30
|
+
unless override.empty?
|
|
31
|
+
path = File.expand_path(override, root)
|
|
32
|
+
abort!("K_CHANGELOG_VERSION_FILE does not exist: #{override}") unless File.file?(path)
|
|
33
|
+
|
|
34
|
+
return [path]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
candidates = Dir[File.join(root, "lib", "**", "version.rb")]
|
|
38
|
+
abort!("Could not find version.rb under lib/**.") if candidates.empty?
|
|
39
|
+
candidates
|
|
40
|
+
end
|
|
41
|
+
|
|
27
42
|
# Classify the bump type from prev -> cur.
|
|
28
43
|
# EPIC is a MAJOR > 1000.
|
|
29
44
|
# @param prev [String] previous released version
|
data/lib/kettle/dev.rb
CHANGED
|
@@ -103,7 +103,7 @@ module Kettle
|
|
|
103
103
|
ctx = context ? context.to_s : "KETTLE-DEV-RESCUE"
|
|
104
104
|
Kernel.warn("[#{ctx}] #{error.class}: #{error.message}")
|
|
105
105
|
Kernel.warn(Array(error.backtrace).first(5).join("\n")) if backtrace && error.respond_to?(:backtrace) && error.backtrace
|
|
106
|
-
rescue
|
|
106
|
+
rescue
|
|
107
107
|
# never raise from debug logging
|
|
108
108
|
end
|
|
109
109
|
|
|
@@ -116,7 +116,7 @@ module Kettle
|
|
|
116
116
|
|
|
117
117
|
ctx = context ? context.to_s : "KETTLE-DEV-DEBUG"
|
|
118
118
|
Kernel.warn("[#{ctx}] #{msg}")
|
|
119
|
-
rescue
|
|
119
|
+
rescue
|
|
120
120
|
# never raise from debug logging
|
|
121
121
|
end
|
|
122
122
|
|
|
@@ -146,7 +146,7 @@ module Kettle
|
|
|
146
146
|
if defined?(Rake) && Rake::Task.task_defined?(:default)
|
|
147
147
|
begin
|
|
148
148
|
Rake::Task[:default].enhance([task_name])
|
|
149
|
-
rescue
|
|
149
|
+
rescue => e
|
|
150
150
|
Kernel.warn("kettle-dev: failed to enhance :default with #{task_name}: #{e.message}") if DEBUGGING
|
|
151
151
|
end
|
|
152
152
|
end
|
data/lib/kettle-dev.rb
CHANGED
data.tar.gz.sig
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
��
|
|
1
|
+
z/��$Qr�m�$(
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kettle-dev
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -46,7 +46,7 @@ dependencies:
|
|
|
46
46
|
version: '2.0'
|
|
47
47
|
- - ">="
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 2.0.
|
|
49
|
+
version: 2.0.2
|
|
50
50
|
type: :runtime
|
|
51
51
|
prerelease: false
|
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -56,7 +56,7 @@ dependencies:
|
|
|
56
56
|
version: '2.0'
|
|
57
57
|
- - ">="
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 2.0.
|
|
59
|
+
version: 2.0.2
|
|
60
60
|
- !ruby/object:Gem::Dependency
|
|
61
61
|
name: version_gem
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -188,7 +188,7 @@ dependencies:
|
|
|
188
188
|
version: '2.0'
|
|
189
189
|
- - ">="
|
|
190
190
|
- !ruby/object:Gem::Version
|
|
191
|
-
version: 2.0.
|
|
191
|
+
version: 2.0.1
|
|
192
192
|
type: :development
|
|
193
193
|
prerelease: false
|
|
194
194
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -198,7 +198,7 @@ dependencies:
|
|
|
198
198
|
version: '2.0'
|
|
199
199
|
- - ">="
|
|
200
200
|
- !ruby/object:Gem::Version
|
|
201
|
-
version: 2.0.
|
|
201
|
+
version: 2.0.1
|
|
202
202
|
description: "\U0001F372 Kettle::Dev is a meta tool from kettle-rb to streamline development
|
|
203
203
|
and testing. Acts as a shim dependency, pulling in many other dependencies, to give
|
|
204
204
|
you OOTB productivity with a RubyGem, or Ruby app project. Configures a complete
|
|
@@ -312,10 +312,10 @@ licenses:
|
|
|
312
312
|
- AGPL-3.0-only
|
|
313
313
|
metadata:
|
|
314
314
|
homepage_uri: https://kettle-dev.galtzo.com
|
|
315
|
-
source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v2.0.
|
|
316
|
-
changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v2.0.
|
|
315
|
+
source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v2.0.7
|
|
316
|
+
changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v2.0.7/CHANGELOG.md
|
|
317
317
|
bug_tracker_uri: https://github.com/kettle-rb/kettle-dev/issues
|
|
318
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.0.
|
|
318
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.0.7
|
|
319
319
|
funding_uri: https://github.com/sponsors/pboling
|
|
320
320
|
wiki_uri: https://github.com/kettle-rb/kettle-dev/wiki
|
|
321
321
|
news_uri: https://www.railsbling.com/tags/kettle-dev
|
metadata.gz.sig
CHANGED
|
Binary file
|