kettle-dev 3.0.9 → 3.0.11
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 +2 -2
- data/CHANGELOG.md +31 -1
- data/README.md +5 -1
- data/lib/kettle/dev/bundler_env_guard.rb +18 -6
- data/lib/kettle/dev/lockfile_reset.rb +20 -5
- data/lib/kettle/dev/release_cli.rb +10 -4
- data/lib/kettle/dev/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +4 -4
- 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: 8705b505fb67483562906f08b0f5b0364b1ca70b29dd280aa43b8d8253462c9c
|
|
4
|
+
data.tar.gz: b50dcb48986f104a45ca91ede2e689c93b4fba14488a78ab040e2697f74e3800
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8cc4266eb73a959dee5394c22662632d7da905329221b3ac18d12b5b670eab11b96a6228f39a5280423b3fe8b5f1067c5aa8a0982c3306d3bfef85b39d647488
|
|
7
|
+
data.tar.gz: bc3e6ff554d12422ccdd5c8a3381ca8756020556466afcef1b2fa34a5e54aceba1ba8310348d0dd36927fbd391197b05306a118fb128236518f6828c546c6cbb
|
checksums.yaml.gz.sig
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
�?u}N1�������(ĭ
|
|
2
|
+
��3h�
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,32 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.0.11] - 2026-08-24
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.0.11][3.0.11t]
|
|
36
|
+
- COVERAGE: 91.27% -- 5699/6244 lines in 47 files
|
|
37
|
+
- BRANCH COVERAGE: 76.11% -- 2176/2859 branches in 47 files
|
|
38
|
+
- 51.11% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Run release changelog coverage against the registry-backed dependency graph instead of inheriting local templating paths.
|
|
43
|
+
|
|
44
|
+
- Reset dynamic Bundler parent markers before switching a child process to another Gemfile, so release changelog coverage runs the target project specs.
|
|
45
|
+
|
|
46
|
+
## [3.0.10] - 2026-08-23
|
|
47
|
+
|
|
48
|
+
- TAG: [v3.0.10][3.0.10t]
|
|
49
|
+
- COVERAGE: 91.15% -- 5688/6240 lines in 47 files
|
|
50
|
+
- BRANCH COVERAGE: 76.13% -- 2175/2857 branches in 47 files
|
|
51
|
+
- 50.62% documented
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
|
|
55
|
+
- Omit the standalone kettle-changelog dependency from normal release-time Bundler resolution, preventing unpublished downstream gem cycles in monorepo release waves.
|
|
56
|
+
|
|
57
|
+
- Use a dependency-specific environment switch when omitting kettle-changelog from release Bundler resolution.
|
|
58
|
+
|
|
33
59
|
## [3.0.9] - 2026-08-23
|
|
34
60
|
|
|
35
61
|
- TAG: [v3.0.9][3.0.9t]
|
|
@@ -3516,7 +3542,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
3516
3542
|
- Selecting will run the selected workflow via `act`
|
|
3517
3543
|
- This may move to its own gem in the future.
|
|
3518
3544
|
|
|
3519
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.
|
|
3545
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.11...HEAD
|
|
3546
|
+
[3.0.11]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.10...v3.0.11
|
|
3547
|
+
[3.0.11t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.11
|
|
3548
|
+
[3.0.10]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.9...v3.0.10
|
|
3549
|
+
[3.0.10t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.10
|
|
3520
3550
|
[3.0.9]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.8...v3.0.9
|
|
3521
3551
|
[3.0.9t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.9
|
|
3522
3552
|
[3.0.8]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.7...v3.0.8
|
data/README.md
CHANGED
|
@@ -463,6 +463,10 @@ What it does:
|
|
|
463
463
|
variables, known local-template toggles, and writes checksums while
|
|
464
464
|
updating path-sourced and checksum-gap gems back to released registry
|
|
465
465
|
versions.
|
|
466
|
+
- Release lockfile resets set `KETTLE_DEV_SKIP_CHANGELOG_DEPENDENCY=true`.
|
|
467
|
+
This does not skip changelog generation; it keeps the development-only
|
|
468
|
+
`kettle-changelog` gem out of the release bundle so unpublished family
|
|
469
|
+
gems cannot enter Bundler's resolution graph.
|
|
466
470
|
- During `kettle-release`, release lockfiles are reset before the release
|
|
467
471
|
prep commit. Before pushing, `kettle-release` validates those committed
|
|
468
472
|
lockfiles again; if local paths or checksum gaps reappear, it prints the
|
|
@@ -1008,7 +1012,7 @@ Thanks for RTFM. ☺️
|
|
|
1008
1012
|
[📌gitmoji]: https://gitmoji.dev
|
|
1009
1013
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1010
1014
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1011
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.
|
|
1015
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.244-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1012
1016
|
[🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
|
|
1013
1017
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1014
1018
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -12,6 +12,14 @@ module Kettle
|
|
|
12
12
|
BUNDLER_VERSION
|
|
13
13
|
].freeze
|
|
14
14
|
|
|
15
|
+
# Bundler uses these markers to restore the environment of the parent
|
|
16
|
+
# bundle. They are not inert when a child explicitly selects another
|
|
17
|
+
# Gemfile: Bundler can use BUNDLER_ORIG_BUNDLE_GEMFILE to reselect the
|
|
18
|
+
# parent bundle. Clear the dynamic keys along with RESET_ENV_KEYS.
|
|
19
|
+
RESET_ENV_PREFIXES = %w[
|
|
20
|
+
BUNDLER_ORIG_
|
|
21
|
+
].freeze
|
|
22
|
+
|
|
15
23
|
INERT_ENV_KEYS = %w[
|
|
16
24
|
BUNDLE_DEBUG
|
|
17
25
|
BUNDLE_QUIET
|
|
@@ -22,16 +30,18 @@ module Kettle
|
|
|
22
30
|
BUNDLER_DEBUG
|
|
23
31
|
].freeze
|
|
24
32
|
|
|
25
|
-
INERT_ENV_PREFIXES = %w[
|
|
26
|
-
BUNDLER_ORIG_
|
|
27
|
-
].freeze
|
|
28
|
-
|
|
29
33
|
module_function
|
|
30
34
|
|
|
31
35
|
def unbundled_env
|
|
32
|
-
RESET_ENV_KEYS.each_with_object({}) do |key,
|
|
36
|
+
env = RESET_ENV_KEYS.each_with_object({}) do |key, result|
|
|
37
|
+
result[key] = nil
|
|
38
|
+
end
|
|
39
|
+
ENV.each_key do |key|
|
|
40
|
+
next unless RESET_ENV_PREFIXES.any? { |prefix| key.start_with?(prefix) }
|
|
41
|
+
|
|
33
42
|
env[key] = nil
|
|
34
43
|
end
|
|
44
|
+
env
|
|
35
45
|
end
|
|
36
46
|
|
|
37
47
|
def warn_unexpected_env!(stream: $stderr)
|
|
@@ -45,6 +55,7 @@ module Kettle
|
|
|
45
55
|
)
|
|
46
56
|
end
|
|
47
57
|
|
|
58
|
+
# rubocop:disable ThreadSafety/ClassInstanceVariable -- warning state is intentionally shared by module functions.
|
|
48
59
|
def reset_warning_cache!
|
|
49
60
|
@warned_unexpected_env_keys = {}
|
|
50
61
|
end
|
|
@@ -56,7 +67,7 @@ module Kettle
|
|
|
56
67
|
def expected_env_key?(key)
|
|
57
68
|
RESET_ENV_KEYS.include?(key) ||
|
|
58
69
|
INERT_ENV_KEYS.include?(key) ||
|
|
59
|
-
|
|
70
|
+
RESET_ENV_PREFIXES.any? { |prefix| key.start_with?(prefix) }
|
|
60
71
|
end
|
|
61
72
|
|
|
62
73
|
def warned_unexpected_env?(keys)
|
|
@@ -67,6 +78,7 @@ module Kettle
|
|
|
67
78
|
@warned_unexpected_env_keys[signature] = true
|
|
68
79
|
false
|
|
69
80
|
end
|
|
81
|
+
# rubocop:enable ThreadSafety/ClassInstanceVariable
|
|
70
82
|
end
|
|
71
83
|
end
|
|
72
84
|
end
|
|
@@ -34,18 +34,31 @@ module Kettle
|
|
|
34
34
|
@release_platforms = {}
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
def reset(target)
|
|
37
|
+
def reset(target, skip_changelog_dependency: false)
|
|
38
38
|
BundlerEnvGuard.warn_unexpected_env!
|
|
39
39
|
paths = lockfile_paths_for(target)
|
|
40
40
|
force_full_update = release_lockfiles_target?(target)
|
|
41
|
+
skip_changelog_dependency ||= force_full_update
|
|
41
42
|
platforms = release_platforms_for(paths) if force_full_update
|
|
42
43
|
uninstall_unreleased_local_gems(paths) if force_full_update
|
|
43
44
|
paths.each do |path|
|
|
44
|
-
|
|
45
|
+
if force_full_update || normalization_needed?(path)
|
|
46
|
+
reset_lockfile!(
|
|
47
|
+
path,
|
|
48
|
+
full_update: force_full_update,
|
|
49
|
+
platforms: platforms&.fetch(path),
|
|
50
|
+
skip_changelog_dependency: skip_changelog_dependency
|
|
51
|
+
)
|
|
52
|
+
end
|
|
45
53
|
end
|
|
46
54
|
if force_full_update && uninstall_unreleased_local_gems(paths)
|
|
47
55
|
paths.each do |path|
|
|
48
|
-
reset_lockfile!(
|
|
56
|
+
reset_lockfile!(
|
|
57
|
+
path,
|
|
58
|
+
full_update: true,
|
|
59
|
+
platforms: platforms.fetch(path),
|
|
60
|
+
skip_changelog_dependency: skip_changelog_dependency
|
|
61
|
+
)
|
|
49
62
|
end
|
|
50
63
|
end
|
|
51
64
|
diagnostics = paths.flat_map { |path| diagnostics(path) }
|
|
@@ -54,7 +67,7 @@ module Kettle
|
|
|
54
67
|
paths
|
|
55
68
|
end
|
|
56
69
|
|
|
57
|
-
def reset_lockfile!(path, full_update: false, platforms: nil)
|
|
70
|
+
def reset_lockfile!(path, full_update: false, platforms: nil, skip_changelog_dependency: false)
|
|
58
71
|
gemfile = gemfile_for_lockfile(path)
|
|
59
72
|
unless gemfile && File.file?(gemfile)
|
|
60
73
|
warn("Cannot reset #{display_path(path)} because its Gemfile was not found.")
|
|
@@ -67,6 +80,7 @@ module Kettle
|
|
|
67
80
|
gemfile: gemfile,
|
|
68
81
|
full_update: full_update,
|
|
69
82
|
platforms: platforms,
|
|
83
|
+
skip_changelog_dependency: skip_changelog_dependency,
|
|
70
84
|
isolated_gem_home: gem_home
|
|
71
85
|
)
|
|
72
86
|
if full_update || has_local_path_remote?(path)
|
|
@@ -77,7 +91,7 @@ module Kettle
|
|
|
77
91
|
end
|
|
78
92
|
end
|
|
79
93
|
|
|
80
|
-
def reset_command(path:, gemfile:, full_update: false, platforms: nil, isolated_gem_home: nil)
|
|
94
|
+
def reset_command(path:, gemfile:, full_update: false, platforms: nil, skip_changelog_dependency: false, isolated_gem_home: nil)
|
|
81
95
|
update_gems = (full_update || has_local_path_remote?(path)) ? [] : reset_update_gems(path)
|
|
82
96
|
platforms ||= reset_platforms(path)
|
|
83
97
|
removed_platforms = full_update ? [] : lockfile_platforms(path) - platforms
|
|
@@ -85,6 +99,7 @@ module Kettle
|
|
|
85
99
|
"BUNDLE_GEMFILE" => gemfile,
|
|
86
100
|
"BUNDLE_LOCKFILE" => path
|
|
87
101
|
)
|
|
102
|
+
env["KETTLE_DEV_SKIP_CHANGELOG_DEPENDENCY"] = "true" if skip_changelog_dependency
|
|
88
103
|
if isolated_gem_home
|
|
89
104
|
env["GEM_HOME"] = isolated_gem_home
|
|
90
105
|
env["GEM_PATH"] = isolated_gem_home
|
|
@@ -689,7 +689,10 @@ module Kettle
|
|
|
689
689
|
emit_release_lockfile_event(action: "reset", status: "started", stage: stage, attempt: attempt, attempts: attempts)
|
|
690
690
|
puts "Resetting release lockfiles with local path dependencies disabled #{stage} (attempt #{attempt}/#{attempts})..."
|
|
691
691
|
begin
|
|
692
|
-
lockfile_reset.reset(
|
|
692
|
+
lockfile_reset.reset(
|
|
693
|
+
Kettle::Dev::LockfileReset::RELEASE_LOCKFILES_TARGET,
|
|
694
|
+
skip_changelog_dependency: true
|
|
695
|
+
)
|
|
693
696
|
emit_release_lockfile_event(action: "reset", status: "ok", stage: stage, attempt: attempt, attempts: attempts)
|
|
694
697
|
break
|
|
695
698
|
rescue Kettle::Dev::Error => error
|
|
@@ -775,7 +778,7 @@ module Kettle
|
|
|
775
778
|
end
|
|
776
779
|
|
|
777
780
|
def normalize_release_lockfile!(path)
|
|
778
|
-
lockfile_reset.reset_lockfile!(path)
|
|
781
|
+
lockfile_reset.reset_lockfile!(path, skip_changelog_dependency: true)
|
|
779
782
|
end
|
|
780
783
|
|
|
781
784
|
def release_gemfile_for_lockfile(path)
|
|
@@ -783,7 +786,7 @@ module Kettle
|
|
|
783
786
|
end
|
|
784
787
|
|
|
785
788
|
def release_lockfile_normalization_env
|
|
786
|
-
lockfile_reset.normalization_env
|
|
789
|
+
lockfile_reset.normalization_env.merge("KETTLE_DEV_SKIP_CHANGELOG_DEPENDENCY" => "true")
|
|
787
790
|
end
|
|
788
791
|
|
|
789
792
|
def release_lockfile_diagnostics(path)
|
|
@@ -899,7 +902,10 @@ module Kettle
|
|
|
899
902
|
escaped_gemfile = Shellwords.escape(gemfile)
|
|
900
903
|
command = +"env -u BUNDLE_GEMFILE -u BUNDLE_LOCKFILE"
|
|
901
904
|
if (local_root = release_changelog_local_root)
|
|
902
|
-
|
|
905
|
+
# Changelog coverage runs before the release lockfile reset. Keep it
|
|
906
|
+
# on the registry-backed release graph instead of reintroducing local
|
|
907
|
+
# sibling paths through the inherited templating switch.
|
|
908
|
+
command << " KETTLE_DEV_DEV=false K_JEM_TEMPLATING=false KETTLE_CHANGELOG_DEV_ROOT=#{Shellwords.escape(local_root)}"
|
|
903
909
|
end
|
|
904
910
|
command << " BUNDLE_GEMFILE=#{escaped_gemfile} bundle exec kettle-changelog"
|
|
905
911
|
command
|
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.11"
|
|
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.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -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.11
|
|
404
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.11/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.11
|
|
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
|