kettle-family 1.2.75 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1646de2982d2372560fe6619e24afa7abb1573dc7a19889ae207f8bbd3c55247
4
- data.tar.gz: d735b77106c08653c95cb039476c2f1ff7a6f08bb35232cdcd5cc4489693e0cf
3
+ metadata.gz: ea5e2e449c39979639ba25d8ef16b2319801caae9cad7484aa06ea42b02b6ba5
4
+ data.tar.gz: 356a1d85acb9691fc5cf224ac02ebc184bf9ad2a27cbdff10041234ab09a5ad6
5
5
  SHA512:
6
- metadata.gz: b2adcb3a0921026fa2d50c59d22f9ba2990c4a682bca13f2e61368e161d8273e640b72e95728951db62527ede8d64dc94b9d089f81f2c68947b3b6b13508ac21
7
- data.tar.gz: 0700e5424babd6ad5ecc9fb2338f06fbb424fb150b566ed8f8c82601e18c14d2b7808089c973f3a2c8a31c7cc4c33adee975250eeea4a17aa5817dd50e72ece4
6
+ metadata.gz: aca651e1786dd95149f72b06ea89f1cf105a517f24d9d7ced1cff15027d2ab3865e76c6584f661f2cb82eb68d2f7f19322a68031ff173d859f51eed593fd280e
7
+ data.tar.gz: 0ec5a86efdbcdb299dab0326b0079f156d8d2ef27164e11da8fbf60852d0a05f68336875f1ac3135916aff2f0871b787c9b0552fc2a331018c17b9b4e501c624
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.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
+
33
46
  ## [1.2.75] - 2026-08-31
34
47
 
35
48
  - TAG: [v1.2.75][1.2.75t]
@@ -2403,7 +2416,9 @@ Please file a bug if you notice a violation of semantic versioning.
2403
2416
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
2404
2417
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
2405
2418
 
2406
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.75...HEAD
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
2407
2422
  [1.2.75]: https://github.com/kettle-dev/kettle-family/compare/v1.2.74...v1.2.75
2408
2423
  [1.2.75t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.75
2409
2424
  [1.2.74]: https://github.com/kettle-dev/kettle-family/compare/v1.2.73...v1.2.74
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.951-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
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
 
@@ -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
- lines << " resume: #{resume_hint_for(result)}" unless result.ok?
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?).map { |result| resume_hint_for(result) }.uniq
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.75"
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,8 +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
- aggregate_members = aggregate_release_members(workflow_members)
524
- results << aggregate_monorepo_github_release(aggregate_members) unless aggregate_members.empty?
523
+ selected_aggregate_members = aggregate_release_members(workflow_members)
524
+ results << aggregate_monorepo_github_release(aggregate_github_release_members) unless selected_aggregate_members.empty?
525
525
  return results
526
526
  end
527
527
  return git_sync_results(workflow_members) if GIT_SYNC_COMMANDS.key?(command)
@@ -2396,6 +2396,13 @@ module Kettle
2396
2396
  member && aggregate_release_members.include?(member)
2397
2397
  end
2398
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
+
2399
2406
  def fast_recovery_for?(member)
2400
2407
  return false unless fast_recovery
2401
2408
  return false unless member
@@ -2627,7 +2634,7 @@ module Kettle
2627
2634
  env["KETTLE_DEV_DEV"] = local_kettle_dev if local_path_env_value?(local_kettle_dev)
2628
2635
  started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
2629
2636
  stdout, stderr, status = Open3.capture3(env, *command, chdir: config.root)
2630
- CommandResult.new(
2637
+ result = CommandResult.new(
2631
2638
  member_name: config.family_name,
2632
2639
  phase: "aggregate_github_release",
2633
2640
  command: command,
@@ -2640,6 +2647,8 @@ module Kettle
2640
2647
  skipped: false,
2641
2648
  reason: status.success? ? nil : "aggregate GitHub release failed"
2642
2649
  )
2650
+ result.resume_command = aggregate_github_release_resume_command(env, command) unless result.ok?
2651
+ result
2643
2652
  rescue => error
2644
2653
  aggregate_release_result("#{error.class}: #{error.message}")
2645
2654
  end
@@ -2651,6 +2660,13 @@ module Kettle
2651
2660
  def aggregate_monorepo_github_release?
2652
2661
  explicit_monorepo_mode? && family_members.length > 1
2653
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
2654
2670
  # simplecov:enable
2655
2671
 
2656
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.75
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.25
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.25
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.75
445
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.75/CHANGELOG.md
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.75
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