kettle-family 1.2.74 → 1.2.76
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 +29 -1
- data/README.md +1 -1
- data/lib/kettle/family/command_result.rb +4 -2
- data/lib/kettle/family/report.rb +6 -2
- data/lib/kettle/family/version.rb +1 -1
- data/lib/kettle/family/workflow.rb +33 -3
- 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: ea5e2e449c39979639ba25d8ef16b2319801caae9cad7484aa06ea42b02b6ba5
|
|
4
|
+
data.tar.gz: 356a1d85acb9691fc5cf224ac02ebc184bf9ad2a27cbdff10041234ab09a5ad6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aca651e1786dd95149f72b06ea89f1cf105a517f24d9d7ced1cff15027d2ab3865e76c6584f661f2cb82eb68d2f7f19322a68031ff173d859f51eed593fd280e
|
|
7
|
+
data.tar.gz: 0ec5a86efdbcdb299dab0326b0079f156d8d2ef27164e11da8fbf60852d0a05f68336875f1ac3135916aff2f0871b787c9b0552fc2a331018c17b9b4e501c624
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,30 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [1.2.76] - 2026-08-31
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.2.76][1.2.76t]
|
|
36
|
+
- COVERAGE: 93.32% -- 5558/5956 lines in 33 files
|
|
37
|
+
- BRANCH COVERAGE: 76.76% -- 2286/2978 branches in 33 files
|
|
38
|
+
- 30.69% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Avoid invalid member-scoped resume hints for synthetic aggregate GitHub Release failures.
|
|
43
|
+
|
|
44
|
+
- Include all shared-family artifacts when recovering an interrupted aggregate GitHub Release.
|
|
45
|
+
|
|
46
|
+
## [1.2.75] - 2026-08-31
|
|
47
|
+
|
|
48
|
+
- TAG: [v1.2.75][1.2.75t]
|
|
49
|
+
- COVERAGE: 93.31% -- 5553/5951 lines in 33 files
|
|
50
|
+
- BRANCH COVERAGE: 76.70% -- 2281/2974 branches in 33 files
|
|
51
|
+
- 30.50% documented
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
|
|
55
|
+
- Restrict monorepo aggregate GitHub Releases to the shared-version cohort, preserving independently versioned excluded members' own releases.
|
|
56
|
+
|
|
33
57
|
## [1.2.74] - 2026-08-31
|
|
34
58
|
|
|
35
59
|
- TAG: [v1.2.74][1.2.74t]
|
|
@@ -2392,7 +2416,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
2392
2416
|
- Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
|
|
2393
2417
|
- Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
|
|
2394
2418
|
|
|
2395
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.
|
|
2419
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.76...HEAD
|
|
2420
|
+
[1.2.76]: https://github.com/kettle-dev/kettle-family/compare/v1.2.75...v1.2.76
|
|
2421
|
+
[1.2.76t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.76
|
|
2422
|
+
[1.2.75]: https://github.com/kettle-dev/kettle-family/compare/v1.2.74...v1.2.75
|
|
2423
|
+
[1.2.75t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.75
|
|
2396
2424
|
[1.2.74]: https://github.com/kettle-dev/kettle-family/compare/v1.2.73...v1.2.74
|
|
2397
2425
|
[1.2.74t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.74
|
|
2398
2426
|
[1.2.73]: https://github.com/kettle-dev/kettle-family/compare/v1.2.72...v1.2.73
|
data/README.md
CHANGED
|
@@ -1049,7 +1049,7 @@ Thanks for RTFM. ☺️
|
|
|
1049
1049
|
[📌gitmoji]: https://gitmoji.dev
|
|
1050
1050
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1051
1051
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1052
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.
|
|
1052
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-5.956-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1053
1053
|
[🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
|
|
1054
1054
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1055
1055
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -17,7 +17,8 @@ module Kettle
|
|
|
17
17
|
:branch,
|
|
18
18
|
:output_streamed,
|
|
19
19
|
:log_path,
|
|
20
|
-
:resume_step
|
|
20
|
+
:resume_step,
|
|
21
|
+
:resume_command
|
|
21
22
|
) do
|
|
22
23
|
def to_h
|
|
23
24
|
{
|
|
@@ -35,7 +36,8 @@ module Kettle
|
|
|
35
36
|
"reason" => reason,
|
|
36
37
|
"output_streamed" => output_streamed?,
|
|
37
38
|
"log_path" => log_path,
|
|
38
|
-
"resume_step" => resume_step
|
|
39
|
+
"resume_step" => resume_step,
|
|
40
|
+
"resume_command" => resume_command
|
|
39
41
|
}
|
|
40
42
|
end
|
|
41
43
|
|
data/lib/kettle/family/report.rb
CHANGED
|
@@ -122,7 +122,8 @@ module Kettle
|
|
|
122
122
|
lines << " #{result_state(result)} #{result.member_name} #{result.phase} #{result.reason || ""}".rstrip
|
|
123
123
|
append_result_stdout(lines, result)
|
|
124
124
|
append_indented_output(lines, result.stderr) if !result.ok? && !result.stderr.to_s.empty?
|
|
125
|
-
|
|
125
|
+
resume_hint = resume_hint_for(result)
|
|
126
|
+
lines << " resume: #{resume_hint}" if !result.ok? && resume_hint
|
|
126
127
|
end
|
|
127
128
|
append_template_summary(lines) if command == "template"
|
|
128
129
|
end
|
|
@@ -687,7 +688,7 @@ module Kettle
|
|
|
687
688
|
end
|
|
688
689
|
|
|
689
690
|
def release_resume_hints
|
|
690
|
-
failed_hints = visible_results.reject(&:ok?).
|
|
691
|
+
failed_hints = visible_results.reject(&:ok?).filter_map { |result| resume_hint_for(result) }.uniq
|
|
691
692
|
pending_names = summary_pending.map { |entry| entry.fetch("member") }
|
|
692
693
|
return failed_hints if pending_names.empty?
|
|
693
694
|
|
|
@@ -701,6 +702,9 @@ module Kettle
|
|
|
701
702
|
end
|
|
702
703
|
|
|
703
704
|
def release_resume_hint(result)
|
|
705
|
+
return result.resume_command if result.respond_to?(:resume_command) && !result.resume_command.to_s.empty?
|
|
706
|
+
return nil if result.phase == "aggregate_github_release"
|
|
707
|
+
|
|
704
708
|
hint = release_resume_base
|
|
705
709
|
hint = "#{hint} --only #{result.member_name}" if result.member_name
|
|
706
710
|
hint = "#{hint} --start-step #{result.resume_step}" if result.respond_to?(:resume_step) && result.resume_step
|
|
@@ -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.76"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
@@ -520,7 +520,8 @@ module Kettle
|
|
|
520
520
|
results.concat(release_member_results(workflow_members, include_family_changelog: !skip_changelog))
|
|
521
521
|
return results unless explicit_monorepo_mode? && results.all?(&:ok?)
|
|
522
522
|
|
|
523
|
-
|
|
523
|
+
selected_aggregate_members = aggregate_release_members(workflow_members)
|
|
524
|
+
results << aggregate_monorepo_github_release(aggregate_github_release_members) unless selected_aggregate_members.empty?
|
|
524
525
|
return results
|
|
525
526
|
end
|
|
526
527
|
return git_sync_results(workflow_members) if GIT_SYNC_COMMANDS.key?(command)
|
|
@@ -2382,6 +2383,26 @@ module Kettle
|
|
|
2382
2383
|
member && member.name == (@aggregate_validation_member_name || aggregate_validation_members.first&.name)
|
|
2383
2384
|
end
|
|
2384
2385
|
|
|
2386
|
+
# The aggregate GitHub Release represents the shared-version cohort. An
|
|
2387
|
+
# aggregate-validation exclusion retains an independently versioned
|
|
2388
|
+
# member's complete release lifecycle, including its own GitHub Release.
|
|
2389
|
+
def aggregate_release_members(release_members = members)
|
|
2390
|
+
return Array(release_members) unless config.release_aggregate_validation? && config.shared_changelog?
|
|
2391
|
+
|
|
2392
|
+
aggregate_validation_members(release_members)
|
|
2393
|
+
end
|
|
2394
|
+
|
|
2395
|
+
def aggregate_release_member?(member)
|
|
2396
|
+
member && aggregate_release_members.include?(member)
|
|
2397
|
+
end
|
|
2398
|
+
|
|
2399
|
+
# A resumed release may select only the members that remain unpublished.
|
|
2400
|
+
# The repository-level release still needs every shared-version artifact,
|
|
2401
|
+
# including members published by an earlier interrupted wave.
|
|
2402
|
+
def aggregate_github_release_members
|
|
2403
|
+
aggregate_release_members(family_members)
|
|
2404
|
+
end
|
|
2405
|
+
|
|
2385
2406
|
def fast_recovery_for?(member)
|
|
2386
2407
|
return false unless fast_recovery
|
|
2387
2408
|
return false unless member
|
|
@@ -2506,7 +2527,7 @@ module Kettle
|
|
|
2506
2527
|
# after their member gems. A standalone gem uses the default
|
|
2507
2528
|
# monorepo mode too, but must let kettle-release create its own
|
|
2508
2529
|
# GitHub Release.
|
|
2509
|
-
env["KETTLE_RELEASE_SKIP_GITHUB_RELEASE"] = "true" if aggregate_monorepo_github_release?
|
|
2530
|
+
env["KETTLE_RELEASE_SKIP_GITHUB_RELEASE"] = "true" if aggregate_monorepo_github_release? && aggregate_release_member?(member)
|
|
2510
2531
|
end
|
|
2511
2532
|
if aggregate_validation_member?(member)
|
|
2512
2533
|
env["KETTLE_RELEASE_FAMILY_CI_MODE"] = aggregate_validation_member_name?(member) ? "validation" : "member"
|
|
@@ -2613,7 +2634,7 @@ module Kettle
|
|
|
2613
2634
|
env["KETTLE_DEV_DEV"] = local_kettle_dev if local_path_env_value?(local_kettle_dev)
|
|
2614
2635
|
started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
2615
2636
|
stdout, stderr, status = Open3.capture3(env, *command, chdir: config.root)
|
|
2616
|
-
CommandResult.new(
|
|
2637
|
+
result = CommandResult.new(
|
|
2617
2638
|
member_name: config.family_name,
|
|
2618
2639
|
phase: "aggregate_github_release",
|
|
2619
2640
|
command: command,
|
|
@@ -2626,6 +2647,8 @@ module Kettle
|
|
|
2626
2647
|
skipped: false,
|
|
2627
2648
|
reason: status.success? ? nil : "aggregate GitHub release failed"
|
|
2628
2649
|
)
|
|
2650
|
+
result.resume_command = aggregate_github_release_resume_command(env, command) unless result.ok?
|
|
2651
|
+
result
|
|
2629
2652
|
rescue => error
|
|
2630
2653
|
aggregate_release_result("#{error.class}: #{error.message}")
|
|
2631
2654
|
end
|
|
@@ -2637,6 +2660,13 @@ module Kettle
|
|
|
2637
2660
|
def aggregate_monorepo_github_release?
|
|
2638
2661
|
explicit_monorepo_mode? && family_members.length > 1
|
|
2639
2662
|
end
|
|
2663
|
+
|
|
2664
|
+
def aggregate_github_release_resume_command(env, command)
|
|
2665
|
+
assignments = env.sort_by { |key, _value| key }.filter_map do |key, value|
|
|
2666
|
+
"#{key}=#{Shellwords.escape(value.to_s)}" unless value.nil?
|
|
2667
|
+
end
|
|
2668
|
+
(["env", *assignments].join(" ") + " " + Shellwords.join(command)).strip
|
|
2669
|
+
end
|
|
2640
2670
|
# simplecov:enable
|
|
2641
2671
|
|
|
2642
2672
|
def aggregate_release_result(reason)
|
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.76
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -91,7 +91,7 @@ dependencies:
|
|
|
91
91
|
requirements:
|
|
92
92
|
- - ">="
|
|
93
93
|
- !ruby/object:Gem::Version
|
|
94
|
-
version: 3.0.
|
|
94
|
+
version: 3.0.26
|
|
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.26
|
|
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.76
|
|
445
|
+
changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.76/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.76
|
|
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
|