kettle-family 1.2.90 → 1.2.91
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/family/appraisal_bootstrap.rb +2 -1
- data/lib/kettle/family/command_runner.rb +4 -4
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +56 -4
- 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: e63a81da6b871ee1c27d813b23f7840e7c0e0a577e3a992076922ff2750574b3
|
|
4
|
+
data.tar.gz: 859158cd1aa7b293126edb628f02eb8bc641a0fcd4797a6f097af9fe46a9ef27
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ee75302308856eb21755bfdc3a598fe9e0d3992b4a493c84825e891dbd76f514f976549fde093de80bfe55d822567d36cba2375a666c1ca2fc6b4a9844f8ae5c
|
|
7
|
+
data.tar.gz: 3845dff951350adc5177e8ea3bb4ce9b80a155a4a6fbb2b05618acb2363e77e9e8ce158129521f03ca8d02816b8bdfd1f1c5ec80507c982a0546e95314815068
|
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
|
+
## [1.2.91] - 2026-09-06
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.2.91][1.2.91t]
|
|
36
|
+
- COVERAGE: 93.58% -- 6109/6528 lines in 35 files
|
|
37
|
+
- BRANCH COVERAGE: 78.06% -- 2483/3181 branches in 35 files
|
|
38
|
+
- 32.41% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Trust Mise configurations in disposable worktrees before member commands run.
|
|
43
|
+
|
|
44
|
+
- Remove retired appraisal declarations cleanly from files without a trailing newline during template bootstrap.
|
|
45
|
+
|
|
33
46
|
## [1.2.90] - 2026-09-06
|
|
34
47
|
|
|
35
48
|
- TAG: [v1.2.90][1.2.90t]
|
|
@@ -2592,7 +2605,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
2592
2605
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
2593
2606
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
2594
2607
|
|
|
2595
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.
|
|
2608
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.91...HEAD
|
|
2609
|
+
[1.2.91]: https://github.com/kettle-dev/kettle-family/compare/v1.2.90...v1.2.91
|
|
2610
|
+
[1.2.91t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.91
|
|
2596
2611
|
[1.2.90]: https://github.com/kettle-dev/kettle-family/compare/v1.2.89...v1.2.90
|
|
2597
2612
|
[1.2.90t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.90
|
|
2598
2613
|
[1.2.89]: https://github.com/kettle-dev/kettle-family/compare/v1.2.88...v1.2.89
|
data/README.md
CHANGED
|
@@ -1121,7 +1121,7 @@ Thanks for RTFM. ☺️
|
|
|
1121
1121
|
[📌gitmoji]: https://gitmoji.dev
|
|
1122
1122
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1123
1123
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1124
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.
|
|
1124
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.528-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1125
1125
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
1126
1126
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1127
1127
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -66,7 +66,8 @@ module Kettle
|
|
|
66
66
|
def obsolete_appraisal_edit(path, source, node)
|
|
67
67
|
return unless legacy_appraisal_call?(node)
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
preceding_newline = source.rindex("\n", node.location.start_offset - 1)
|
|
70
|
+
line_start = preceding_newline ? preceding_newline + 1 : 0
|
|
70
71
|
line_end = source.index("\n", node.location.end_offset) || source.length
|
|
71
72
|
line_end += 1 if line_end < source.length
|
|
72
73
|
if final_standalone_call?(source, node, line_start, line_end)
|
|
@@ -230,8 +230,8 @@ module Kettle
|
|
|
230
230
|
@otp_coordinator = otp_coordinator
|
|
231
231
|
end
|
|
232
232
|
|
|
233
|
-
def call(member:, phase:, command:, env: {}, interactive: false, stdout_line_handler: nil, log_path: nil, passthrough_output: true)
|
|
234
|
-
argv = command_argv(member: member, command: command, env: env)
|
|
233
|
+
def call(member:, phase:, command:, env: {}, interactive: false, raw: false, stdout_line_handler: nil, log_path: nil, passthrough_output: true)
|
|
234
|
+
argv = command_argv(member: member, command: command, env: env, raw: raw)
|
|
235
235
|
process_env = process_env(member: member, env: env)
|
|
236
236
|
spawn_options = process_options
|
|
237
237
|
return skipped_result(member: member, phase: phase, argv: argv) unless execute
|
|
@@ -598,9 +598,9 @@ module Kettle
|
|
|
598
598
|
nil
|
|
599
599
|
end
|
|
600
600
|
|
|
601
|
-
def command_argv(member:, command:, env: {})
|
|
601
|
+
def command_argv(member:, command:, env: {}, raw: false)
|
|
602
602
|
argv = normalize_command(command)
|
|
603
|
-
return argv
|
|
603
|
+
return argv if raw || !mise_configured?(member)
|
|
604
604
|
|
|
605
605
|
command_env = nonsensitive_env(env)
|
|
606
606
|
unset_env, set_env = command_env.partition { |_key, value| value.nil? }
|
|
@@ -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.91"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
@@ -717,11 +717,14 @@ module Kettle
|
|
|
717
717
|
results << result
|
|
718
718
|
break unless result.ok?
|
|
719
719
|
|
|
720
|
-
|
|
720
|
+
entry = {
|
|
721
721
|
member: relocate_member_to_worktree(member, worktree_root, source_root: config.root),
|
|
722
722
|
original_member: member,
|
|
723
723
|
worktree_root: worktree_root
|
|
724
724
|
}
|
|
725
|
+
entries << entry
|
|
726
|
+
results.concat(worktree_mise_trust_results(entry, runner: runner, phase: "test_member_worktree_mise_trust"))
|
|
727
|
+
break unless results.last.ok?
|
|
725
728
|
end
|
|
726
729
|
[entries, results]
|
|
727
730
|
end
|
|
@@ -1038,11 +1041,14 @@ module Kettle
|
|
|
1038
1041
|
results << result
|
|
1039
1042
|
break unless result.ok?
|
|
1040
1043
|
|
|
1041
|
-
|
|
1044
|
+
entry = {
|
|
1042
1045
|
member: relocate_member_to_worktree(member, worktree_root, source_root: config.root),
|
|
1043
1046
|
original_member: member,
|
|
1044
1047
|
worktree_root: worktree_root
|
|
1045
1048
|
}
|
|
1049
|
+
entries << entry
|
|
1050
|
+
results.concat(worktree_mise_trust_results(entry, runner: runner, phase: "template_member_worktree_mise_trust"))
|
|
1051
|
+
break unless results.last.ok?
|
|
1046
1052
|
end
|
|
1047
1053
|
[entries, results]
|
|
1048
1054
|
end
|
|
@@ -1435,7 +1441,11 @@ module Kettle
|
|
|
1435
1441
|
outcomes << add
|
|
1436
1442
|
break unless add.ok?
|
|
1437
1443
|
|
|
1438
|
-
|
|
1444
|
+
entry = {branch: branch, member: relocate_member_to_worktree(member, worktree_root), worktree_root: worktree_root}
|
|
1445
|
+
entries << entry
|
|
1446
|
+
trust_results = worktree_mise_trust_results(entry.merge(original_member: member), runner: runner, phase: "template_worktree_mise_trust")
|
|
1447
|
+
outcomes.concat(trust_results)
|
|
1448
|
+
break unless trust_results.all?(&:ok?)
|
|
1439
1449
|
end
|
|
1440
1450
|
|
|
1441
1451
|
if outcomes.all?(&:ok?)
|
|
@@ -1491,6 +1501,45 @@ module Kettle
|
|
|
1491
1501
|
end
|
|
1492
1502
|
end
|
|
1493
1503
|
|
|
1504
|
+
# A git worktree has a distinct absolute path, and Mise deliberately
|
|
1505
|
+
# tracks trust by config path. Trust every active config between the
|
|
1506
|
+
# worktree root and the member command directory before invoking a
|
|
1507
|
+
# command there. This bootstrap must run raw: wrapping it in `mise exec`
|
|
1508
|
+
# would require the trust it is establishing.
|
|
1509
|
+
def worktree_mise_trust_results(entry, runner:, phase:)
|
|
1510
|
+
member = entry.fetch(:member)
|
|
1511
|
+
original_member = entry.fetch(:original_member, member)
|
|
1512
|
+
worktree_root = entry.fetch(:worktree_root)
|
|
1513
|
+
mise_config_roots_in_worktree(worktree_root, member.root).map do |root|
|
|
1514
|
+
result = runner.call(
|
|
1515
|
+
member: member,
|
|
1516
|
+
phase: phase,
|
|
1517
|
+
command: ["mise", "trust", "-C", root],
|
|
1518
|
+
raw: true
|
|
1519
|
+
)
|
|
1520
|
+
result.member_name = original_member.name
|
|
1521
|
+
result
|
|
1522
|
+
end
|
|
1523
|
+
end
|
|
1524
|
+
|
|
1525
|
+
def mise_config_roots_in_worktree(worktree_root, member_root)
|
|
1526
|
+
root_path = Pathname.new(worktree_root).realpath
|
|
1527
|
+
member_path = Pathname.new(member_root).realpath
|
|
1528
|
+
return [] unless member_path.to_s.start_with?("#{root_path}#{File::SEPARATOR}") || member_path == root_path
|
|
1529
|
+
|
|
1530
|
+
current = member_path
|
|
1531
|
+
roots = []
|
|
1532
|
+
loop do
|
|
1533
|
+
roots << current.to_s if %w[mise.toml .mise.toml].any? { |name| File.file?(current.join(name)) }
|
|
1534
|
+
break if current == root_path
|
|
1535
|
+
|
|
1536
|
+
current = current.parent
|
|
1537
|
+
end
|
|
1538
|
+
roots.reverse
|
|
1539
|
+
rescue Errno::ENOENT
|
|
1540
|
+
[]
|
|
1541
|
+
end
|
|
1542
|
+
|
|
1494
1543
|
def template_branch_worktree_entries_results(entries)
|
|
1495
1544
|
wave_jobs = template_jobs(entries)
|
|
1496
1545
|
queue = Queue.new
|
|
@@ -2038,7 +2087,10 @@ module Kettle
|
|
|
2038
2087
|
results << result
|
|
2039
2088
|
break unless result.ok?
|
|
2040
2089
|
|
|
2041
|
-
|
|
2090
|
+
entry = {member: relocate_member_to_worktree(member, root, source_root: config.root), original_member: member, worktree_root: root}
|
|
2091
|
+
entries << entry
|
|
2092
|
+
results.concat(worktree_mise_trust_results(entry, runner: runner, phase: "release_worktree_mise_trust"))
|
|
2093
|
+
break unless results.last.ok?
|
|
2042
2094
|
end
|
|
2043
2095
|
[entries, results]
|
|
2044
2096
|
end
|
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.91
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -443,10 +443,10 @@ licenses:
|
|
|
443
443
|
- AGPL-3.0-only
|
|
444
444
|
metadata:
|
|
445
445
|
homepage_uri: https://kettle-family.galtzo.com
|
|
446
|
-
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.
|
|
447
|
-
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.
|
|
446
|
+
source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.91
|
|
447
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.91/CHANGELOG.md
|
|
448
448
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
|
|
449
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.
|
|
449
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.91
|
|
450
450
|
funding_uri: https://github.com/sponsors/pboling
|
|
451
451
|
wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
|
|
452
452
|
news_uri: https://www.railsbling.com/tags/kettle-family
|
metadata.gz.sig
CHANGED
|
Binary file
|