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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7be7ab5d418e657e0da7272a46b2725e68ff8042a44875edda3f49b0fa5e53d3
4
- data.tar.gz: f95c1046814dcec472dd0ef3daf85b471b86c6fde589b9fc8e7fec878aa17159
3
+ metadata.gz: ea5e2e449c39979639ba25d8ef16b2319801caae9cad7484aa06ea42b02b6ba5
4
+ data.tar.gz: 356a1d85acb9691fc5cf224ac02ebc184bf9ad2a27cbdff10041234ab09a5ad6
5
5
  SHA512:
6
- metadata.gz: 2add7602ea8b5ec1b28ad47aa9e83b6cab6592cc79dd8e7dbf8b233eacc0b0639591abc4731c370be387757a898de8c584e1fba8ad129796d81077aeb253ce3f
7
- data.tar.gz: 8cb1a3425743d37a25a023c9ee68c689da44902dc9076e404fab3a7fd76a1b8b2b7a5c1d4bcc8c51fa32570e34936f4b59d4d125137e9b6c0bc6b78ebcb379d3
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.74...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
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.945-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.74"
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
- results << aggregate_monorepo_github_release(workflow_members)
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.74
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.24
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.24
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.74
445
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.74/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.74
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