kettle-family 0.2.5 → 0.2.6
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 +19 -1
- data/README.md +1 -1
- data/lib/kettle/family/command_runner.rb +27 -22
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +2 -2
- 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: e60652d7fefc590ce39d77a3344c00d5f54603fec08e881633907309666d7123
|
|
4
|
+
data.tar.gz: 7c63758c740901820321012a2b63816ea578ba240ba9f2553e3c77971e15c416
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 814faf3a55b8be19df30565b6a968191a985ed751d3beb3af2079c9bd939f6e7ca2c1968f3709d97f263a2313dbf468d814f28ffd7a72ee36aa3b8d12e6236b4
|
|
7
|
+
data.tar.gz: 1017d4d63d75a6932e6ca21d1e860f3cb822373751a626c0ee8291d1f11228500143b4e13c3cd7ee480fb8d0c43a37f84b214327a0d93fe23c001fc170c0dbc5
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,22 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [0.2.6] - 2026-07-14
|
|
34
|
+
|
|
35
|
+
- TAG: [v0.2.6][0.2.6t]
|
|
36
|
+
- COVERAGE: 95.14% -- 2311/2429 lines in 23 files
|
|
37
|
+
- BRANCH COVERAGE: 76.75% -- 769/1002 branches in 23 files
|
|
38
|
+
- 29.54% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Command runner child processes now use a per-child unbundled environment
|
|
43
|
+
instead of mutating global `ENV`, avoiding threaded release crashes on
|
|
44
|
+
TruffleRuby.
|
|
45
|
+
- Family release commands no longer receive the implicit family local path
|
|
46
|
+
environment variable by default, preventing `kettle-release` from committing
|
|
47
|
+
sibling path sources into release lockfiles.
|
|
48
|
+
|
|
33
49
|
## [0.2.5] - 2026-07-11
|
|
34
50
|
|
|
35
51
|
- TAG: [v0.2.5][0.2.5t]
|
|
@@ -670,7 +686,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
670
686
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
671
687
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
672
688
|
|
|
673
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v0.2.
|
|
689
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v0.2.6...HEAD
|
|
690
|
+
[0.2.6]: https://github.com/kettle-dev/kettle-family/compare/v0.2.5...v0.2.6
|
|
691
|
+
[0.2.6t]: https://github.com/kettle-dev/kettle-family/releases/tag/v0.2.6
|
|
674
692
|
[0.2.5]: https://github.com/kettle-dev/kettle-family/compare/v0.2.4...v0.2.5
|
|
675
693
|
[0.2.5t]: https://github.com/kettle-dev/kettle-family/releases/tag/v0.2.5
|
|
676
694
|
[0.2.4]: https://github.com/kettle-dev/kettle-family/compare/v0.2.3...v0.2.4
|
data/README.md
CHANGED
|
@@ -603,7 +603,7 @@ Thanks for RTFM. ☺️
|
|
|
603
603
|
[📌gitmoji]: https://gitmoji.dev
|
|
604
604
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
605
605
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
606
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.
|
|
606
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.429-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
607
607
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
608
608
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
609
609
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -114,15 +114,14 @@ module Kettle
|
|
|
114
114
|
def call(member:, phase:, command:, env: {}, interactive: false)
|
|
115
115
|
argv = command_argv(member: member, command: command, env: env)
|
|
116
116
|
process_env = process_env(member: member, env: env)
|
|
117
|
+
spawn_options = process_options
|
|
117
118
|
return skipped_result(member: member, phase: phase, argv: argv) unless execute
|
|
118
119
|
|
|
119
120
|
started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
120
|
-
stdout, stderr, status =
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
Open3.capture3(process_env, *argv, chdir: member.root)
|
|
125
|
-
end
|
|
121
|
+
stdout, stderr, status = if interactive
|
|
122
|
+
run_interactive(env: process_env, argv: argv, chdir: member.root, member_name: member.name, process_options: spawn_options)
|
|
123
|
+
else
|
|
124
|
+
Open3.capture3(process_env, *argv, chdir: member.root, **spawn_options)
|
|
126
125
|
end
|
|
127
126
|
stdout = normalize_output(stdout)
|
|
128
127
|
stderr = normalize_output(stderr)
|
|
@@ -146,16 +145,16 @@ module Kettle
|
|
|
146
145
|
|
|
147
146
|
attr_reader :execute, :accept, :gem_signing_password, :otp_coordinator
|
|
148
147
|
|
|
149
|
-
def run_interactive(env:, argv:, chdir:, member_name:)
|
|
150
|
-
return run_interactive_pty(env: env, argv: argv, chdir: chdir, member_name: member_name) if pty_available?
|
|
148
|
+
def run_interactive(env:, argv:, chdir:, member_name:, process_options:)
|
|
149
|
+
return run_interactive_pty(env: env, argv: argv, chdir: chdir, member_name: member_name, process_options: process_options) if pty_available?
|
|
151
150
|
|
|
152
|
-
run_interactive_open3(env: env, argv: argv, chdir: chdir, member_name: member_name)
|
|
151
|
+
run_interactive_open3(env: env, argv: argv, chdir: chdir, member_name: member_name, process_options: process_options)
|
|
153
152
|
end
|
|
154
153
|
|
|
155
|
-
def run_interactive_pty(env:, argv:, chdir:, member_name:)
|
|
154
|
+
def run_interactive_pty(env:, argv:, chdir:, member_name:, process_options:)
|
|
156
155
|
stdout = +""
|
|
157
156
|
status = nil
|
|
158
|
-
PTY.spawn(env, *argv, chdir: chdir) do |output, input, pid|
|
|
157
|
+
PTY.spawn(env, *argv, chdir: chdir, **process_options) do |output, input, pid|
|
|
159
158
|
begin
|
|
160
159
|
loop do
|
|
161
160
|
readers = [output]
|
|
@@ -180,11 +179,11 @@ module Kettle
|
|
|
180
179
|
[stdout, "", status]
|
|
181
180
|
end
|
|
182
181
|
|
|
183
|
-
def run_interactive_open3(env:, argv:, chdir:, member_name:)
|
|
182
|
+
def run_interactive_open3(env:, argv:, chdir:, member_name:, process_options:)
|
|
184
183
|
captured_stdout = +""
|
|
185
184
|
captured_stderr = +""
|
|
186
185
|
status = nil
|
|
187
|
-
Open3.popen3(env, *argv, chdir: chdir) do |input, output, error, wait_thread|
|
|
186
|
+
Open3.popen3(env, *argv, chdir: chdir, **process_options) do |input, output, error, wait_thread|
|
|
188
187
|
readers = [output, error]
|
|
189
188
|
readers << $stdin if $stdin.tty? && !otp_coordinator
|
|
190
189
|
until readers.empty?
|
|
@@ -280,14 +279,6 @@ module Kettle
|
|
|
280
279
|
output.to_s.encode("UTF-8", invalid: :replace, undef: :replace, replace: "")
|
|
281
280
|
end
|
|
282
281
|
|
|
283
|
-
def with_unbundled_environment
|
|
284
|
-
if defined?(Bundler)
|
|
285
|
-
Bundler.with_unbundled_env { yield }
|
|
286
|
-
else
|
|
287
|
-
yield
|
|
288
|
-
end
|
|
289
|
-
end
|
|
290
|
-
|
|
291
282
|
def command_argv(member:, command:, env: {})
|
|
292
283
|
argv = normalize_command(command)
|
|
293
284
|
return argv unless mise_configured?(member)
|
|
@@ -304,7 +295,21 @@ module Kettle
|
|
|
304
295
|
end
|
|
305
296
|
|
|
306
297
|
def process_env(member:, env:)
|
|
307
|
-
|
|
298
|
+
base_env = unbundled_process_env
|
|
299
|
+
return base_env.merge(env) unless mise_configured?(member)
|
|
300
|
+
|
|
301
|
+
base_env
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
def unbundled_process_env
|
|
305
|
+
return Bundler.original_env if defined?(Bundler) && Bundler.respond_to?(:original_env)
|
|
306
|
+
return Bundler.unbundled_env if defined?(Bundler) && Bundler.respond_to?(:unbundled_env)
|
|
307
|
+
|
|
308
|
+
{}
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def process_options
|
|
312
|
+
return {unsetenv_others: true} if defined?(Bundler)
|
|
308
313
|
|
|
309
314
|
{}
|
|
310
315
|
end
|
|
@@ -635,7 +635,7 @@ module Kettle
|
|
|
635
635
|
end
|
|
636
636
|
|
|
637
637
|
def base_release_env
|
|
638
|
-
env = config.
|
|
638
|
+
env = config.release_env
|
|
639
639
|
env["KETTLE_FAMILY_CONFIG"] = config.path if config.path
|
|
640
640
|
env.merge!(TEMPLATE_QUIET_ENV) unless debug
|
|
641
641
|
env["K_RELEASE_CI_CONTINUE"] = "true" if continue_ci_failures
|
|
@@ -917,7 +917,7 @@ module Kettle
|
|
|
917
917
|
end
|
|
918
918
|
|
|
919
919
|
def release_allowed_local_path_roots
|
|
920
|
-
config.
|
|
920
|
+
config.release_env.merge(env_overrides).filter_map do |key, value|
|
|
921
921
|
next unless key.end_with?("_LOCAL", "_DEV")
|
|
922
922
|
next if value.to_s.empty? || value.to_s.casecmp("false").zero?
|
|
923
923
|
|
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: 0.2.
|
|
4
|
+
version: 0.2.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -341,10 +341,10 @@ licenses:
|
|
|
341
341
|
- AGPL-3.0-only
|
|
342
342
|
metadata:
|
|
343
343
|
homepage_uri: https://kettle-family.galtzo.com
|
|
344
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.2.
|
|
345
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.2.
|
|
344
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v0.2.6
|
|
345
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v0.2.6/CHANGELOG.md
|
|
346
346
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
347
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.2.
|
|
347
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/0.2.6
|
|
348
348
|
funding_uri: https://github.com/sponsors/pboling
|
|
349
349
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
350
350
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
metadata.gz.sig
CHANGED
|
Binary file
|