kettle-family 1.2.76 → 1.2.78

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: ea5e2e449c39979639ba25d8ef16b2319801caae9cad7484aa06ea42b02b6ba5
4
- data.tar.gz: 356a1d85acb9691fc5cf224ac02ebc184bf9ad2a27cbdff10041234ab09a5ad6
3
+ metadata.gz: d9b7d6740376ab7d2fc779c542ac2b0cdc0a699365f81524661e2ba85981bf7f
4
+ data.tar.gz: b517ddd2b6e67723bdb90f253e9911ef9c8d2b46cb671e2c5c4488b6d4d525f2
5
5
  SHA512:
6
- metadata.gz: aca651e1786dd95149f72b06ea89f1cf105a517f24d9d7ced1cff15027d2ab3865e76c6584f661f2cb82eb68d2f7f19322a68031ff173d859f51eed593fd280e
7
- data.tar.gz: 0ec5a86efdbcdb299dab0326b0079f156d8d2ef27164e11da8fbf60852d0a05f68336875f1ac3135916aff2f0871b787c9b0552fc2a331018c17b9b4e501c624
6
+ metadata.gz: 29cc312861e8dd9bb644c5174d9c28dbcca03631eab91c6196999d1cf63fb4c898db3afd7a83911e95ec284e289a4028fa2796fe9c182124daadf1df35443214
7
+ data.tar.gz: 9be50641d873026f744571befc0addf3491a3b230ea3f9ccf09a5b863a4226a53b121e1b7d09d33f55e5cec39e8f235beed37905f669ad19a46f846851b17dea
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,28 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.2.78] - 2026-09-01
34
+
35
+ - TAG: [v1.2.78][1.2.78t]
36
+ - COVERAGE: 93.34% -- 5575/5973 lines in 33 files
37
+ - BRANCH COVERAGE: 76.66% -- 2292/2990 branches in 33 files
38
+ - 30.69% documented
39
+
40
+ ### Fixed
41
+
42
+ - Retry dependency floor lockfile refreshes only while a newly released family gem is unavailable from the registry.
43
+
44
+ ## [1.2.77] - 2026-08-31
45
+
46
+ - TAG: [v1.2.77][1.2.77t]
47
+ - COVERAGE: 93.33% -- 5568/5966 lines in 33 files
48
+ - BRANCH COVERAGE: 76.69% -- 2290/2986 branches in 33 files
49
+ - 30.69% documented
50
+
51
+ ### Added
52
+
53
+ - Stream aggregate monorepo GitHub Release asset events through family release progress.
54
+
33
55
  ## [1.2.76] - 2026-08-31
34
56
 
35
57
  - TAG: [v1.2.76][1.2.76t]
@@ -2416,7 +2438,11 @@ Please file a bug if you notice a violation of semantic versioning.
2416
2438
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
2417
2439
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
2418
2440
 
2419
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.76...HEAD
2441
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.78...HEAD
2442
+ [1.2.78]: https://github.com/kettle-dev/kettle-family/compare/v1.2.77...v1.2.78
2443
+ [1.2.78t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.78
2444
+ [1.2.77]: https://github.com/kettle-dev/kettle-family/compare/v1.2.76...v1.2.77
2445
+ [1.2.77t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.77
2420
2446
  [1.2.76]: https://github.com/kettle-dev/kettle-family/compare/v1.2.75...v1.2.76
2421
2447
  [1.2.76t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.76
2422
2448
  [1.2.75]: https://github.com/kettle-dev/kettle-family/compare/v1.2.74...v1.2.75
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.956-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1052
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.973-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
@@ -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.76"
8
+ VERSION = "1.2.78"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -1723,6 +1723,7 @@ module Kettle
1723
1723
  validate_dependency_floor_lockfile_result(result: result, member: member, released_members: released_members) if result.ok?
1724
1724
  annotate_dependency_floor_lockfile_result(result, attempts)
1725
1725
  break if result.ok?
1726
+ break unless dependency_floor_registry_retryable?(result: result, released_members: released_members)
1726
1727
 
1727
1728
  sleep(REGISTRY_WAIT_INTERVAL_SECONDS) if index + 1 < REGISTRY_WAIT_ATTEMPTS
1728
1729
  end
@@ -2034,6 +2035,20 @@ module Kettle
2034
2035
  end
2035
2036
  end
2036
2037
 
2038
+ # Registry propagation is the only condition that merits waiting here.
2039
+ # Solver conflicts and missing local paths are deterministic until the
2040
+ # project configuration changes, so retrying them only hides the error.
2041
+ def dependency_floor_registry_retryable?(result:, released_members:)
2042
+ return false if released_members.empty?
2043
+
2044
+ output = [result.stdout, result.stderr].compact.join("\n")
2045
+ released_members.any? do |member|
2046
+ name = Regexp.escape(member.name)
2047
+ output.match?(/Could not find gem ["']#{name}(?:[ "']|$)/) ||
2048
+ output.match?(/CHECKSUMS .*#{name}/)
2049
+ end
2050
+ end
2051
+
2037
2052
  def commit_dependency_floor_changes(dependent_members:, runner:, memo:)
2038
2053
  by_name = members.to_h { |member| [member.name, member] }
2039
2054
  dependent_members.each do |member_name|
@@ -2616,7 +2631,7 @@ module Kettle
2616
2631
  checksum_path = File.join(member.root, "checksums", "#{member.name}-#{version.first}.gem.sha256")
2617
2632
  gem_path + (File.file?(checksum_path) ? [checksum_path] : [])
2618
2633
  end
2619
- command = ["bundle", "exec", "kettle-gh-release", "--allow-unpublished", "--release-version", version.first]
2634
+ command = ["bundle", "exec", "kettle-gh-release", "--allow-unpublished", "--events", "--release-version", version.first]
2620
2635
  assets.each { |asset| command.concat(["--asset", asset]) }
2621
2636
  return aggregate_release_dry_run_result(command) unless execute
2622
2637
 
@@ -2632,20 +2647,15 @@ module Kettle
2632
2647
  # implementation needed by this aggregate step.
2633
2648
  local_kettle_dev = ENV.fetch("KETTLE_DEV_DEV", "").to_s.strip
2634
2649
  env["KETTLE_DEV_DEV"] = local_kettle_dev if local_path_env_value?(local_kettle_dev)
2635
- started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
2636
- stdout, stderr, status = Open3.capture3(env, *command, chdir: config.root)
2637
- result = CommandResult.new(
2638
- member_name: config.family_name,
2650
+ aggregate_member = family_member
2651
+ result = command_runner.call(
2652
+ member: aggregate_member,
2639
2653
  phase: "aggregate_github_release",
2640
2654
  command: command,
2641
- workdir: config.root,
2642
- status: status.exitstatus,
2643
- success: status.success?,
2644
- stdout: stdout,
2645
- stderr: stderr,
2646
- elapsed_seconds: Process.clock_gettime(Process::CLOCK_MONOTONIC) - started,
2647
- skipped: false,
2648
- reason: status.success? ? nil : "aggregate GitHub release failed"
2655
+ env: env,
2656
+ stdout_line_handler: aggregate_github_release_event_line_handler(aggregate_member),
2657
+ log_path: release_command_log_path(aggregate_member, "aggregate_github_release"),
2658
+ passthrough_output: release_command_passthrough_output?
2649
2659
  )
2650
2660
  result.resume_command = aggregate_github_release_resume_command(env, command) unless result.ok?
2651
2661
  result
@@ -2667,6 +2677,16 @@ module Kettle
2667
2677
  end
2668
2678
  (["env", *assignments].join(" ") + " " + Shellwords.join(command)).strip
2669
2679
  end
2680
+
2681
+ def aggregate_github_release_event_line_handler(member)
2682
+ lambda do |line|
2683
+ event = parse_template_event(line)
2684
+ next false unless event && event["type"] == "github_release"
2685
+
2686
+ emit_template_event_line(member, github_release_event_mark(event), github_release_event_label(event)) if progress_io
2687
+ true
2688
+ end
2689
+ end
2670
2690
  # simplecov:enable
2671
2691
 
2672
2692
  def aggregate_release_result(reason)
@@ -3741,6 +3761,21 @@ module Kettle
3741
3761
  parts.reject(&:empty?).join(":")
3742
3762
  end
3743
3763
 
3764
+ def github_release_event_label(event)
3765
+ parts = ["github_release", event["action"].to_s]
3766
+ asset = event["asset"].to_s
3767
+ parts << asset unless asset.empty?
3768
+ parts << "#{event["attempt"]}/#{event["attempts"]}" if event["attempt"] && event["attempts"]
3769
+ parts.reject(&:empty?).join(":")
3770
+ end
3771
+
3772
+ def github_release_event_mark(event)
3773
+ return "F" if event["status"].to_s == "failed"
3774
+ return "." if event["status"].to_s == "ok"
3775
+
3776
+ ">"
3777
+ end
3778
+
3744
3779
  def diagnostic_event_label(event)
3745
3780
  message = event["message"]
3746
3781
  return message.to_s unless message.to_s.empty? || message.is_a?(Hash)
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.76
4
+ version: 1.2.78
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.26
94
+ version: 3.0.27
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.26
104
+ version: 3.0.27
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.76
445
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.76/CHANGELOG.md
444
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.78
445
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.78/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.76
447
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.78
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