kettle-dev 3.0.33 → 3.0.34
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 +16 -1
- data/README.md +1 -1
- data/lib/kettle/dev/lockfile_reset.rb +57 -14
- data/lib/kettle/dev/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +6 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cf4388ae02268bbe6676ece5cee25b5548277a6e60432554c460f189ca02d2f0
|
|
4
|
+
data.tar.gz: 80841fd013dbd2868b22e36b185c18c0a7f90ed3698f5cb3a2d666c46a80b41b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 713c1d308268ce8cde18124db06ad5efed08d53fc945af0c723843de08d840b6db23f946941de187b2adcf61e482e206e307fda8bbd52b562c3aaed1fd61ee91
|
|
7
|
+
data.tar.gz: 8e94e9a97e3ae52b955fd098db642ab23639fb6e0d67b2abed14fe8684248430c50618b8f8d6f3d0a57bb1934954e1f41fe7b17711fac151bdca9928b98a0795
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,19 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.0.34] - 2026-09-09
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.0.34][3.0.34t]
|
|
36
|
+
- COVERAGE: 91.95% -- 6101/6635 lines in 47 files
|
|
37
|
+
- BRANCH COVERAGE: 76.43% -- 2332/3051 branches in 47 files
|
|
38
|
+
- 50.23% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Detect and reset release lockfiles whose BUNDLED WITH version lacks a matching Bundler checksum.
|
|
43
|
+
|
|
44
|
+
- Declare the intentional version_gem runtime-heads dependency overlap for templating self-tests.
|
|
45
|
+
|
|
33
46
|
## [3.0.33] - 2026-09-07
|
|
34
47
|
|
|
35
48
|
- TAG: [v3.0.33][3.0.33t]
|
|
@@ -3834,7 +3847,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
3834
3847
|
- Selecting will run the selected workflow via `act`
|
|
3835
3848
|
- This may move to its own gem in the future.
|
|
3836
3849
|
|
|
3837
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.
|
|
3850
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.34...HEAD
|
|
3851
|
+
[3.0.34]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.33...v3.0.34
|
|
3852
|
+
[3.0.34t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.34
|
|
3838
3853
|
[3.0.33]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.32...v3.0.33
|
|
3839
3854
|
[3.0.33t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.33
|
|
3840
3855
|
[3.0.32]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.31...v3.0.32
|
data/README.md
CHANGED
|
@@ -1066,7 +1066,7 @@ Thanks for RTFM. ☺️
|
|
|
1066
1066
|
[📌gitmoji]: https://gitmoji.dev
|
|
1067
1067
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1068
1068
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1069
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.
|
|
1069
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.635-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1070
1070
|
[🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
|
|
1071
1071
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1072
1072
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -194,6 +194,29 @@ module Kettle
|
|
|
194
194
|
env["GEM_HOME"] = isolated_gem_home
|
|
195
195
|
env["GEM_PATH"] = isolated_gem_path || isolated_gem_home
|
|
196
196
|
end
|
|
197
|
+
command_prefix = bundler_command_prefix(env)
|
|
198
|
+
command = +"#{command_prefix} bundle lock"
|
|
199
|
+
# Bundler accepts each platform option once followed by a list. Repeating
|
|
200
|
+
# either option silently keeps only the final occurrence with Bundler 4.
|
|
201
|
+
command << " --remove-platform #{removed_platforms.sort.map { |platform| Shellwords.escape(platform) }.join(" ")}" unless removed_platforms.empty?
|
|
202
|
+
command << " --add-platform #{platforms.map { |platform| Shellwords.escape(platform) }.join(" ")}" unless platforms.empty?
|
|
203
|
+
command << " --update"
|
|
204
|
+
command << " #{update_gems.map { |gem_name| Shellwords.escape(gem_name) }.join(" ")}" unless update_gems.empty?
|
|
205
|
+
command << " --add-checksums" unless update_bundler
|
|
206
|
+
return command unless update_bundler
|
|
207
|
+
|
|
208
|
+
# `bundle lock --bundler` accepts a requirement and retains a locked
|
|
209
|
+
# prerelease that satisfies it. `bundle update --bundler=VERSION`
|
|
210
|
+
# records the exact Bundler that is executing the reset instead.
|
|
211
|
+
# Finish with `bundle lock --add-checksums`, since `bundle update`
|
|
212
|
+
# does not support that option.
|
|
213
|
+
bundler_version = Shellwords.escape(Bundler::VERSION)
|
|
214
|
+
command << " && #{command_prefix} bundle update --bundler=#{bundler_version}"
|
|
215
|
+
command << " && #{command_prefix} bundle lock --add-checksums"
|
|
216
|
+
command
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def bundler_command_prefix(env)
|
|
197
220
|
command = +"env"
|
|
198
221
|
UNBUNDLED_ENV_KEYS.each do |key|
|
|
199
222
|
command << " -u #{key}"
|
|
@@ -201,19 +224,6 @@ module Kettle
|
|
|
201
224
|
env.each do |key, value|
|
|
202
225
|
command << " #{key}=#{Shellwords.escape(value)}"
|
|
203
226
|
end
|
|
204
|
-
command << " bundle lock"
|
|
205
|
-
# Bundler accepts each platform option once followed by a list. Repeating
|
|
206
|
-
# either option silently keeps only the final occurrence with Bundler 4.
|
|
207
|
-
command << " --remove-platform #{removed_platforms.sort.map { |platform| Shellwords.escape(platform) }.join(" ")}" unless removed_platforms.empty?
|
|
208
|
-
command << " --add-platform #{platforms.map { |platform| Shellwords.escape(platform) }.join(" ")}" unless platforms.empty?
|
|
209
|
-
command << " --update"
|
|
210
|
-
command << " #{update_gems.map { |gem_name| Shellwords.escape(gem_name) }.join(" ")}" unless update_gems.empty?
|
|
211
|
-
# Bundler preserves BUNDLED WITH during a normal lockfile update.
|
|
212
|
-
# Release lockfiles must record the Bundler that performed the final
|
|
213
|
-
# reset, or the next release command can dirty them after the prep
|
|
214
|
-
# commit by reconciling to a newer installed Bundler.
|
|
215
|
-
command << " --bundler" if update_bundler
|
|
216
|
-
command << " --add-checksums"
|
|
217
227
|
command
|
|
218
228
|
end
|
|
219
229
|
|
|
@@ -254,7 +264,10 @@ module Kettle
|
|
|
254
264
|
end
|
|
255
265
|
|
|
256
266
|
def normalization_needed?(path)
|
|
257
|
-
has_local_path_remote?(path) ||
|
|
267
|
+
has_local_path_remote?(path) ||
|
|
268
|
+
!empty_registry_checksums(path).empty? ||
|
|
269
|
+
!unreleased_workspace_registry_specs(path).empty? ||
|
|
270
|
+
bundled_with_checksum_mismatch?(path)
|
|
258
271
|
end
|
|
259
272
|
|
|
260
273
|
def diagnostics(path)
|
|
@@ -268,6 +281,9 @@ module Kettle
|
|
|
268
281
|
unreleased_workspace_registry_specs(path).each do |name, version, line_number|
|
|
269
282
|
diagnostics << "#{display_path(path)} locks local workspace gem #{name} #{version} as a registry gem, but that version is not resolvable from the configured gem source at line #{line_number}"
|
|
270
283
|
end
|
|
284
|
+
if bundled_with_checksum_mismatch?(path)
|
|
285
|
+
diagnostics.push("#{display_path(path)} BUNDLED WITH #{bundled_with_version(path)} has no matching Bundler checksum")
|
|
286
|
+
end
|
|
271
287
|
diagnostics
|
|
272
288
|
end
|
|
273
289
|
|
|
@@ -459,6 +475,33 @@ module Kettle
|
|
|
459
475
|
end
|
|
460
476
|
end
|
|
461
477
|
|
|
478
|
+
# A release reset updates both `BUNDLED WITH` and CHECKSUMS. When a
|
|
479
|
+
# nested tool leaked its Bundler into a member lockfile, a later cleanup
|
|
480
|
+
# can otherwise replace only the checksum entry and leave an impossible
|
|
481
|
+
# lockfile behind. Only flag a mismatch when the lockfile already tracks
|
|
482
|
+
# Bundler in CHECKSUMS, preserving older lockfiles that lack that entry.
|
|
483
|
+
def bundled_with_checksum_mismatch?(path)
|
|
484
|
+
version = bundled_with_version(path)
|
|
485
|
+
return false if version.empty?
|
|
486
|
+
|
|
487
|
+
checksums = self.class.checksum_entries_from_source(File.read(path))
|
|
488
|
+
return false unless checksums&.keys&.any? { |name, _checksum_version| name == "bundler" }
|
|
489
|
+
|
|
490
|
+
!checksums.key?(["bundler", version])
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
def bundled_with_version(path)
|
|
494
|
+
lines = File.readlines(path)
|
|
495
|
+
marker = lines.index { |line| line.strip == "BUNDLED WITH" }
|
|
496
|
+
return "" unless marker
|
|
497
|
+
|
|
498
|
+
lines[marker.succ..-1].each do |line|
|
|
499
|
+
version = line.strip
|
|
500
|
+
return version unless version.empty?
|
|
501
|
+
end
|
|
502
|
+
""
|
|
503
|
+
end
|
|
504
|
+
|
|
462
505
|
def path_source_gems(path)
|
|
463
506
|
lockfile_parser(path).specs.each_with_object(Set.new) do |spec, gems|
|
|
464
507
|
source = spec.source
|
data/lib/kettle/dev/version.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Kettle
|
|
|
5
5
|
# Version namespace for this gem.
|
|
6
6
|
module Version
|
|
7
7
|
# Current gem version.
|
|
8
|
-
VERSION = "3.0.
|
|
8
|
+
VERSION = "3.0.34"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
data.tar.gz.sig
CHANGED
|
Binary file
|
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: 3.0.
|
|
4
|
+
version: 3.0.34
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -100,7 +100,7 @@ dependencies:
|
|
|
100
100
|
version: '0.1'
|
|
101
101
|
- - ">="
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 0.1.
|
|
103
|
+
version: 0.1.12
|
|
104
104
|
type: :runtime
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -110,7 +110,7 @@ dependencies:
|
|
|
110
110
|
version: '0.1'
|
|
111
111
|
- - ">="
|
|
112
112
|
- !ruby/object:Gem::Version
|
|
113
|
-
version: 0.1.
|
|
113
|
+
version: 0.1.12
|
|
114
114
|
- !ruby/object:Gem::Dependency
|
|
115
115
|
name: kettle-test
|
|
116
116
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -400,10 +400,10 @@ licenses:
|
|
|
400
400
|
- AGPL-3.0-only
|
|
401
401
|
metadata:
|
|
402
402
|
homepage_uri: https://kettle-dev.galtzo.com
|
|
403
|
-
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.
|
|
404
|
-
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.
|
|
403
|
+
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.34
|
|
404
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.34/CHANGELOG.md
|
|
405
405
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
|
|
406
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.
|
|
406
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.34
|
|
407
407
|
funding_uri: https://github.com/sponsors/pboling
|
|
408
408
|
wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
|
|
409
409
|
news_uri: https://www.railsbling.com/tags/kettle-dev
|
metadata.gz.sig
CHANGED
|
Binary file
|