kettle-family 1.2.41 → 1.2.42
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 +20 -1
- data/README.md +9 -1
- data/lib/kettle/family/config.rb +4 -0
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +58 -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: 157856f222f5dac0c7e19ebd7d09eda5f53d9e5653bed4f3639749233aa4463d
|
|
4
|
+
data.tar.gz: 4e39b78d092ed3047ac7a53b278bd5917f7becdb498166e0f5a5157a91f54000
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3cd3ccf5433ec8a181a0ff453475ed76b7fcdd162e8496fdedf1b64b2469b3aa91e27492af034dcbb7e5005f877ff26e77bce5b62e9878ed83793046312977ae
|
|
7
|
+
data.tar.gz: c51400cee32ece6b7b8c1b5b978bbb98e7bc1c04cb8a1372578e03fd3a9ee4811884911e05aca3065d6831e8397f4d4688dabc8a1c8df1c609fbefd07936be2a
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,23 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [1.2.42] - 2026-08-07
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.2.42][1.2.42t]
|
|
36
|
+
- COVERAGE: 93.58% -- 5047/5393 lines in 32 files
|
|
37
|
+
- BRANCH COVERAGE: 76.05% -- 2019/2655 branches in 32 files
|
|
38
|
+
- 29.72% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- Support wave-aware release environments that shrink local sibling paths as selected dependencies become available from the registry.
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
- Preserve explicitly requested local dependency paths during family bundle updates while keeping default updates release-safe.
|
|
47
|
+
|
|
48
|
+
- Keep aggregate monorepo GitHub-release execution out of release dry-runs.
|
|
49
|
+
|
|
33
50
|
## [1.2.41] - 2026-08-07
|
|
34
51
|
|
|
35
52
|
- TAG: [v1.2.41][1.2.41t]
|
|
@@ -1924,7 +1941,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
1924
1941
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
1925
1942
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
1926
1943
|
|
|
1927
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.
|
|
1944
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.42...HEAD
|
|
1945
|
+
[1.2.42]: https://github.com/kettle-dev/kettle-family/compare/v1.2.41...v1.2.42
|
|
1946
|
+
[1.2.42t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.42
|
|
1928
1947
|
[1.2.41]: https://github.com/kettle-dev/kettle-family/compare/v1.2.40...v1.2.41
|
|
1929
1948
|
[1.2.41t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.41
|
|
1930
1949
|
[1.2.40]: https://github.com/kettle-dev/kettle-family/compare/v1.2.39...v1.2.40
|
data/README.md
CHANGED
|
@@ -232,6 +232,7 @@ changelog:
|
|
|
232
232
|
release:
|
|
233
233
|
env:
|
|
234
234
|
KETTLE_DEV_DEV: false
|
|
235
|
+
local_path_strategy: waves
|
|
235
236
|
disable_local_path_env:
|
|
236
237
|
- TSLP_DEV
|
|
237
238
|
family_changelog:
|
|
@@ -249,6 +250,13 @@ env name is not the default derived from `family.name`.
|
|
|
249
250
|
normalization shutoff list for path-injecting env vars that are not themselves
|
|
250
251
|
discoverable as family roots, such as vendored parser/tooling paths.
|
|
251
252
|
|
|
253
|
+
`release.local_path_strategy: waves` allows a release task to provide the
|
|
254
|
+
family local-path environment as its default. Member release commands keep
|
|
255
|
+
that path only while they have a selected sibling dependency that has not
|
|
256
|
+
completed an earlier release wave; once the dependency is available, the
|
|
257
|
+
member resolves it from the registry. Release lockfile normalization always
|
|
258
|
+
disables local paths regardless of this strategy.
|
|
259
|
+
|
|
252
260
|
For `changelog.mode: root`, release commands pass `K_CHANGELOG_GEM_NAME` as the
|
|
253
261
|
configured family name and `K_CHANGELOG_VERSION_FILE` when `version_file` is
|
|
254
262
|
configured, so `kettle-changelog` can operate from a repository root without a
|
|
@@ -837,7 +845,7 @@ Thanks for RTFM. ☺️
|
|
|
837
845
|
[📌gitmoji]: https://gitmoji.dev
|
|
838
846
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
839
847
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
840
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.
|
|
848
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.393-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
841
849
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
842
850
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
843
851
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
data/lib/kettle/family/config.rb
CHANGED
|
@@ -266,6 +266,10 @@ module Kettle
|
|
|
266
266
|
stringify_env(fetch_path("release", "env") || {})
|
|
267
267
|
end
|
|
268
268
|
|
|
269
|
+
def release_local_path_strategy
|
|
270
|
+
fetch_path("release", "local_path_strategy").to_s
|
|
271
|
+
end
|
|
272
|
+
|
|
269
273
|
def release_secrets
|
|
270
274
|
stringify_keys(fetch_path("release", "secrets") || {})
|
|
271
275
|
end
|
|
@@ -5,7 +5,7 @@ module Kettle
|
|
|
5
5
|
# Version namespace for this gem.
|
|
6
6
|
module Version
|
|
7
7
|
# Current gem version.
|
|
8
|
-
VERSION = "1.2.
|
|
8
|
+
VERSION = "1.2.42"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
@@ -1013,6 +1013,7 @@ module Kettle
|
|
|
1013
1013
|
def release_member_results(release_members, include_family_changelog: false)
|
|
1014
1014
|
runner = release_command_runner
|
|
1015
1015
|
results = []
|
|
1016
|
+
@release_completed_member_names = []
|
|
1016
1017
|
append_family_changelog_result(runner: runner, memo: results) if include_family_changelog
|
|
1017
1018
|
return results unless results.all?(&:ok?)
|
|
1018
1019
|
return parallel_release_member_results(release_members, results) if parallel_release_members?(release_members)
|
|
@@ -1025,6 +1026,7 @@ module Kettle
|
|
|
1025
1026
|
break memo unless memo.last.ok?
|
|
1026
1027
|
|
|
1027
1028
|
remaining_members = release_members.drop(release_members.index(member) + 1)
|
|
1029
|
+
@release_completed_member_names << member.name
|
|
1028
1030
|
append_dependency_floor_results(released_members: [member], dependent_members: remaining_members, runner: runner, memo: memo)
|
|
1029
1031
|
break memo unless memo.last&.ok?
|
|
1030
1032
|
end
|
|
@@ -1038,6 +1040,7 @@ module Kettle
|
|
|
1038
1040
|
results = initial_results.dup
|
|
1039
1041
|
waves = release_waves(release_members)
|
|
1040
1042
|
completed_members = []
|
|
1043
|
+
@release_completed_member_names = []
|
|
1041
1044
|
release_progress = start_release_progress(release_members)
|
|
1042
1045
|
@release_progress = release_progress
|
|
1043
1046
|
begin
|
|
@@ -1048,6 +1051,7 @@ module Kettle
|
|
|
1048
1051
|
break unless wave_results.all? { |member_results| member_results.all?(&:ok?) }
|
|
1049
1052
|
|
|
1050
1053
|
completed_members.concat(wave)
|
|
1054
|
+
@release_completed_member_names.concat(wave.map(&:name))
|
|
1051
1055
|
remaining_members = release_members - completed_members
|
|
1052
1056
|
append_dependency_floor_results(released_members: wave, dependent_members: remaining_members, runner: release_command_runner, memo: results)
|
|
1053
1057
|
break unless results.last&.ok?
|
|
@@ -1936,6 +1940,7 @@ module Kettle
|
|
|
1936
1940
|
# member release phase as well as to the separate family phase.
|
|
1937
1941
|
def release_env_for_member(member)
|
|
1938
1942
|
env = release_env
|
|
1943
|
+
env.merge!(release_wave_local_path_env_for(member))
|
|
1939
1944
|
if config.family_mode == "monorepo"
|
|
1940
1945
|
# Monorepo members release from subdirectories, while CI workflows
|
|
1941
1946
|
# live at the shared repository root.
|
|
@@ -1962,6 +1967,29 @@ module Kettle
|
|
|
1962
1967
|
)
|
|
1963
1968
|
end
|
|
1964
1969
|
|
|
1970
|
+
# A release task may start with local sibling paths so a member can
|
|
1971
|
+
# consume a selected dependency that has not been published yet. Once
|
|
1972
|
+
# that dependency is complete in an earlier wave, use its registry
|
|
1973
|
+
# release for the next member. Dependencies outside the selected set are
|
|
1974
|
+
# already treated as registry dependencies; this is what makes resume
|
|
1975
|
+
# runs work after an earlier wave has been published.
|
|
1976
|
+
def release_wave_local_path_env_for(member)
|
|
1977
|
+
return {} unless config.release_local_path_strategy == "waves"
|
|
1978
|
+
|
|
1979
|
+
env_name = config.family_local_path_env_name
|
|
1980
|
+
return {} if env_name.to_s.empty?
|
|
1981
|
+
|
|
1982
|
+
local_value = release_env[env_name]
|
|
1983
|
+
return {} unless local_path_env_value?(local_value)
|
|
1984
|
+
|
|
1985
|
+
selected_names = members.map(&:name)
|
|
1986
|
+
completed_names = Array(@release_completed_member_names)
|
|
1987
|
+
unresolved_selected_dependency = release_dependency_names(member).any? do |dependency|
|
|
1988
|
+
selected_names.include?(dependency) && !completed_names.include?(dependency)
|
|
1989
|
+
end
|
|
1990
|
+
{env_name => unresolved_selected_dependency ? local_value : "false"}
|
|
1991
|
+
end
|
|
1992
|
+
|
|
1965
1993
|
# simplecov:disable Covered by monorepo release integration, not sibling-repository suite.
|
|
1966
1994
|
def aggregate_monorepo_github_release(members)
|
|
1967
1995
|
version = members.map { |member| member.version.to_s }.uniq
|
|
@@ -1974,6 +2002,8 @@ module Kettle
|
|
|
1974
2002
|
end
|
|
1975
2003
|
command = ["bundle", "exec", "kettle-gh-release", "--allow-unpublished", "--release-version", version.first]
|
|
1976
2004
|
assets.each { |asset| command.concat(["--asset", asset]) }
|
|
2005
|
+
return aggregate_release_dry_run_result(command) unless execute
|
|
2006
|
+
|
|
1977
2007
|
env = release_env.merge(
|
|
1978
2008
|
"K_CHANGELOG_GEM_NAME" => config.family_name.to_s,
|
|
1979
2009
|
"K_CHANGELOG_PATH" => File.expand_path(config.changelog_path, config.root),
|
|
@@ -2019,6 +2049,22 @@ module Kettle
|
|
|
2019
2049
|
)
|
|
2020
2050
|
end
|
|
2021
2051
|
|
|
2052
|
+
def aggregate_release_dry_run_result(command)
|
|
2053
|
+
CommandResult.new(
|
|
2054
|
+
member_name: config.family_name,
|
|
2055
|
+
phase: "aggregate_github_release",
|
|
2056
|
+
command: command,
|
|
2057
|
+
workdir: config.root,
|
|
2058
|
+
status: 0,
|
|
2059
|
+
success: true,
|
|
2060
|
+
stdout: "aggregate GitHub release dry-run; pass --execute to run\n",
|
|
2061
|
+
stderr: "",
|
|
2062
|
+
elapsed_seconds: 0.0,
|
|
2063
|
+
skipped: true,
|
|
2064
|
+
reason: "dry-run; pass --execute to run"
|
|
2065
|
+
)
|
|
2066
|
+
end
|
|
2067
|
+
|
|
2022
2068
|
def base_release_env
|
|
2023
2069
|
env = config.release_env
|
|
2024
2070
|
env["KETTLE_FAMILY_CONFIG"] = config.path if config.path
|
|
@@ -2401,7 +2447,18 @@ module Kettle
|
|
|
2401
2447
|
end
|
|
2402
2448
|
|
|
2403
2449
|
def bundle_update_env
|
|
2404
|
-
workflow_env.merge(release_lockfile_local_path_env_overrides)
|
|
2450
|
+
env = workflow_env.merge(release_lockfile_local_path_env_overrides)
|
|
2451
|
+
explicit_local_path_env_overrides.each { |key, value| env[key] = value }
|
|
2452
|
+
env
|
|
2453
|
+
end
|
|
2454
|
+
|
|
2455
|
+
def explicit_local_path_env_overrides
|
|
2456
|
+
ENV.to_h.merge(env_overrides).each_with_object({}) do |(key, value), overrides|
|
|
2457
|
+
next unless key.end_with?("_DEV", "_LOCAL") || config.release_disable_local_path_env.include?(key)
|
|
2458
|
+
next unless local_path_env_requested?(key)
|
|
2459
|
+
|
|
2460
|
+
overrides[key] = value
|
|
2461
|
+
end
|
|
2405
2462
|
end
|
|
2406
2463
|
|
|
2407
2464
|
def monorepo_template?
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kettle-family
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.42
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -74,7 +74,7 @@ dependencies:
|
|
|
74
74
|
version: '2.3'
|
|
75
75
|
- - ">="
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
|
-
version: 2.5.
|
|
77
|
+
version: 2.5.25
|
|
78
78
|
type: :runtime
|
|
79
79
|
prerelease: false
|
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -84,7 +84,7 @@ dependencies:
|
|
|
84
84
|
version: '2.3'
|
|
85
85
|
- - ">="
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
|
-
version: 2.5.
|
|
87
|
+
version: 2.5.25
|
|
88
88
|
- !ruby/object:Gem::Dependency
|
|
89
89
|
name: kettle-test
|
|
90
90
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -360,10 +360,10 @@ licenses:
|
|
|
360
360
|
- AGPL-3.0-only
|
|
361
361
|
metadata:
|
|
362
362
|
homepage_uri: https://kettle-family.galtzo.com
|
|
363
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.
|
|
364
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.
|
|
363
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.42
|
|
364
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.42/CHANGELOG.md
|
|
365
365
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
366
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.
|
|
366
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.42
|
|
367
367
|
funding_uri: https://github.com/sponsors/pboling
|
|
368
368
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
369
369
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
metadata.gz.sig
CHANGED
|
Binary file
|