kettle-family 1.2.65 → 1.2.66
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 +14 -1
- data/README.md +20 -11
- data/lib/kettle/family/config.rb +17 -0
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +32 -9
- data.tar.gz.sig +0 -0
- metadata +8 -8
- 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: 2a19cf5604af70e74e9f7b12803c1d4fceb80f5ec66975c4f6ebc418a20b950f
|
|
4
|
+
data.tar.gz: 40529c2035a5896477c17d34eb7ac1d38904acbfddb831220ffd9b68c301f112
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2e0c056d35770de260972bb0e7a17177292dbb8574f40a20aa7fbc37807a26d75e0aa888bacebc490fce9266b5cd99ed463e5d43e307912affa787cae6a62620
|
|
7
|
+
data.tar.gz: 581fb42e3f2e7c40ffbf05b5e0725a8c7807606e2ca7787c02258dc277ac98fe9e1ecd0971925780e7bd1df259fef119b82d44d93d75636d4108bff4040ea156
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,17 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [1.2.66] - 2026-08-30
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.2.66][1.2.66t]
|
|
36
|
+
- COVERAGE: 93.11% -- 5404/5804 lines in 33 files
|
|
37
|
+
- BRANCH COVERAGE: 76.06% -- 2179/2865 branches in 33 files
|
|
38
|
+
- 30.03% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Derive monorepo release lockfile path policy from family configuration and keep sibling tool paths opt-in.
|
|
43
|
+
|
|
33
44
|
## [1.2.65] - 2026-08-30
|
|
34
45
|
|
|
35
46
|
- TAG: [v1.2.65][1.2.65t]
|
|
@@ -2279,7 +2290,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
2279
2290
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
2280
2291
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
2281
2292
|
|
|
2282
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.
|
|
2293
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.66...HEAD
|
|
2294
|
+
[1.2.66]: https://github.com/kettle-dev/kettle-family/compare/v1.2.65...v1.2.66
|
|
2295
|
+
[1.2.66t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.66
|
|
2283
2296
|
[1.2.65]: https://github.com/kettle-dev/kettle-family/compare/v1.2.64...v1.2.65
|
|
2284
2297
|
[1.2.65t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.65
|
|
2285
2298
|
[1.2.64]: https://github.com/kettle-dev/kettle-family/compare/v1.2.63...v1.2.64
|
data/README.md
CHANGED
|
@@ -252,21 +252,30 @@ release:
|
|
|
252
252
|
```
|
|
253
253
|
|
|
254
254
|
`family.local_path_env` names the environment variable that activates local
|
|
255
|
-
path dependencies for this family.
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
255
|
+
path dependencies for this family. For an explicitly configured
|
|
256
|
+
`family.mode: monorepo`, `kettle-family` derives a release-lock policy that
|
|
257
|
+
allows only `family.members_root` (or the configured member root) and passes
|
|
258
|
+
that policy to each `kettle-release` child. Those paths are valid because the
|
|
259
|
+
same monorepo checkout exists in CI. The tracked `Gemfile.lock` remains a
|
|
260
|
+
development lockfile and may retain those member `PATH` sources.
|
|
261
|
+
|
|
262
|
+
Sibling-repository families do not receive this exception. Their canonical
|
|
263
|
+
lockfiles must use released dependencies: a local Kettle Dev workspace, or
|
|
264
|
+
any other sibling workspace, is never allowed merely because its `*_DEV`
|
|
265
|
+
variable is set. Use `release.allowed_local_path_roots` together with
|
|
266
|
+
`release.allowed_local_path_env` only for an intentionally CI-available path
|
|
267
|
+
layout that cannot be inferred from a monorepo configuration.
|
|
259
268
|
|
|
260
269
|
`release.disable_local_path_env` is different: it is an extra release-lockfile
|
|
261
270
|
normalization shutoff list for path-injecting env vars that are not themselves
|
|
262
271
|
discoverable as family roots, such as vendored parser/tooling paths.
|
|
263
272
|
|
|
264
|
-
`release.local_path_strategy: waves`
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
273
|
+
`release.local_path_strategy: waves` is for sibling families that explicitly
|
|
274
|
+
choose wave-local development resolution. An explicit monorepo instead keeps
|
|
275
|
+
its configured member-root path available throughout its waves, because its
|
|
276
|
+
canonical development lockfile and CI checkout share that path graph. In both
|
|
277
|
+
cases, release normalization rejects every path outside the configured allow
|
|
278
|
+
list.
|
|
270
279
|
|
|
271
280
|
### Release waves and dependency refresh
|
|
272
281
|
|
|
@@ -986,7 +995,7 @@ Thanks for RTFM. ☺️
|
|
|
986
995
|
[📌gitmoji]: https://gitmoji.dev
|
|
987
996
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
988
997
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
989
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.
|
|
998
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.804-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
990
999
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
991
1000
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
992
1001
|
[📄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,23 @@ module Kettle
|
|
|
266
266
|
fetch_path("release", "local_path_strategy").to_s
|
|
267
267
|
end
|
|
268
268
|
|
|
269
|
+
def release_allowed_local_path_roots
|
|
270
|
+
inferred = configured_monorepo_release? ? [family_local_path_root] : []
|
|
271
|
+
configured = Array(fetch_path("release", "allowed_local_path_roots"))
|
|
272
|
+
.map { |path| expand_config_relative_path(path) }
|
|
273
|
+
(inferred + configured).uniq
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
def release_allowed_local_path_env_names
|
|
277
|
+
inferred = configured_monorepo_release? ? [family_local_path_env_name] : []
|
|
278
|
+
configured = Array(fetch_path("release", "allowed_local_path_env"))
|
|
279
|
+
(inferred + configured).compact.map(&:to_s).reject(&:empty?).uniq
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
def configured_monorepo_release?
|
|
283
|
+
fetch_path("family", "mode") == "monorepo"
|
|
284
|
+
end
|
|
285
|
+
|
|
269
286
|
def release_secrets
|
|
270
287
|
stringify_keys(fetch_path("release", "secrets") || {})
|
|
271
288
|
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.66"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
@@ -2349,6 +2349,7 @@ module Kettle
|
|
|
2349
2349
|
def release_env_for_member(member)
|
|
2350
2350
|
env = release_env
|
|
2351
2351
|
env.merge!(release_wave_local_path_env_for(member))
|
|
2352
|
+
env.merge!(release_local_path_policy_env)
|
|
2352
2353
|
# Family release performs one live pin review before member releases.
|
|
2353
2354
|
# Child kettle-release must consume that reviewed cache instead of
|
|
2354
2355
|
# repeating the GitHub API lookup for every member.
|
|
@@ -2412,6 +2413,14 @@ module Kettle
|
|
|
2412
2413
|
# already treated as registry dependencies; this is what makes resume
|
|
2413
2414
|
# runs work after an earlier wave has been published.
|
|
2414
2415
|
def release_wave_local_path_env_for(member)
|
|
2416
|
+
# Monorepo members and their sibling dependencies share the same CI
|
|
2417
|
+
# checkout, so their canonical development lockfile may keep those
|
|
2418
|
+
# paths throughout every release wave.
|
|
2419
|
+
if config.configured_monorepo_release?
|
|
2420
|
+
env_name = config.family_local_path_env_name
|
|
2421
|
+
return env_name ? {env_name => config.family_local_path_root} : {}
|
|
2422
|
+
end
|
|
2423
|
+
|
|
2415
2424
|
return {} unless config.release_local_path_strategy == "waves"
|
|
2416
2425
|
|
|
2417
2426
|
env_name = config.family_local_path_env_name
|
|
@@ -4034,15 +4043,22 @@ module Kettle
|
|
|
4034
4043
|
end
|
|
4035
4044
|
|
|
4036
4045
|
def release_allowed_local_path_roots
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
release_local_path_env_detection_sources.filter_map do |key, value|
|
|
4040
|
-
next unless key.end_with?("_LOCAL", "_DEV")
|
|
4041
|
-
next unless local_path_env_value?(value)
|
|
4042
|
-
next unless value.to_s.strip.start_with?("/", "./", "../", "~")
|
|
4046
|
+
config.release_allowed_local_path_roots
|
|
4047
|
+
end
|
|
4043
4048
|
|
|
4044
|
-
|
|
4045
|
-
|
|
4049
|
+
def release_allowed_local_path_env_names
|
|
4050
|
+
config.release_allowed_local_path_env_names
|
|
4051
|
+
end
|
|
4052
|
+
|
|
4053
|
+
def release_local_path_policy_env
|
|
4054
|
+
roots = release_allowed_local_path_roots
|
|
4055
|
+
env_names = release_allowed_local_path_env_names
|
|
4056
|
+
return {} if roots.empty? && env_names.empty?
|
|
4057
|
+
|
|
4058
|
+
{
|
|
4059
|
+
"KETTLE_RELEASE_ALLOWED_LOCAL_PATH_ROOTS" => roots.join(File::PATH_SEPARATOR),
|
|
4060
|
+
"KETTLE_RELEASE_ALLOWED_LOCAL_PATH_ENVS" => env_names.join(",")
|
|
4061
|
+
}
|
|
4046
4062
|
end
|
|
4047
4063
|
|
|
4048
4064
|
def release_lockfile_local_path_env_overrides(member = nil)
|
|
@@ -4051,11 +4067,18 @@ module Kettle
|
|
|
4051
4067
|
key = key.to_s
|
|
4052
4068
|
next unless key.end_with?("_LOCAL", "_DEV")
|
|
4053
4069
|
next unless local_path_env_value?(value)
|
|
4070
|
+
next if release_allowed_local_path_env_names.include?(key)
|
|
4054
4071
|
|
|
4055
4072
|
memo[key] = "false"
|
|
4056
4073
|
end
|
|
4057
4074
|
inferred = member ? release_lockfile_inferred_local_path_env(member).to_h { |key| [key, "false"] } : {}
|
|
4058
|
-
explicit.merge(derived).merge(inferred)
|
|
4075
|
+
explicit.merge(derived).merge(inferred).merge(release_member_local_path_env(member))
|
|
4076
|
+
end
|
|
4077
|
+
|
|
4078
|
+
def release_member_local_path_env(member)
|
|
4079
|
+
return {} unless config.configured_monorepo_release?
|
|
4080
|
+
|
|
4081
|
+
release_wave_local_path_env_for(member)
|
|
4059
4082
|
end
|
|
4060
4083
|
|
|
4061
4084
|
def release_lockfile_inferred_local_path_env(member)
|
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.66
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -74,7 +74,7 @@ dependencies:
|
|
|
74
74
|
version: '1.0'
|
|
75
75
|
- - ">="
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
|
-
version: 1.0.
|
|
77
|
+
version: 1.0.7
|
|
78
78
|
type: :runtime
|
|
79
79
|
prerelease: false
|
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -84,14 +84,14 @@ dependencies:
|
|
|
84
84
|
version: '1.0'
|
|
85
85
|
- - ">="
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
|
-
version: 1.0.
|
|
87
|
+
version: 1.0.7
|
|
88
88
|
- !ruby/object:Gem::Dependency
|
|
89
89
|
name: kettle-dev
|
|
90
90
|
requirement: !ruby/object:Gem::Requirement
|
|
91
91
|
requirements:
|
|
92
92
|
- - ">="
|
|
93
93
|
- !ruby/object:Gem::Version
|
|
94
|
-
version: 3.0.
|
|
94
|
+
version: 3.0.20
|
|
95
95
|
- - "<"
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
97
|
version: 4.0.0
|
|
@@ -101,7 +101,7 @@ dependencies:
|
|
|
101
101
|
requirements:
|
|
102
102
|
- - ">="
|
|
103
103
|
- !ruby/object:Gem::Version
|
|
104
|
-
version: 3.0.
|
|
104
|
+
version: 3.0.20
|
|
105
105
|
- - "<"
|
|
106
106
|
- !ruby/object:Gem::Version
|
|
107
107
|
version: 4.0.0
|
|
@@ -441,10 +441,10 @@ licenses:
|
|
|
441
441
|
- AGPL-3.0-only
|
|
442
442
|
metadata:
|
|
443
443
|
homepage_uri: https://kettle-family.galtzo.com
|
|
444
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.
|
|
445
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.
|
|
444
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.66
|
|
445
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.66/CHANGELOG.md
|
|
446
446
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
447
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.
|
|
447
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.66
|
|
448
448
|
funding_uri: https://github.com/sponsors/pboling
|
|
449
449
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
450
450
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
metadata.gz.sig
CHANGED
|
Binary file
|