kettle-family 1.2.24 → 1.2.25

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: 02340a086bd67eddf799fba2205032d161ee089ed7bf9f8b093da0feea777d76
4
- data.tar.gz: 81510157e19abba881846f840031eaac469b179bed0c694213e6d4d6ddbe4fb2
3
+ metadata.gz: a0bf576e6199b80bd4119a759a0ddf8aeb5ec049c0134a8e02d0e1abfd29f2cc
4
+ data.tar.gz: 5503f0ce6b1d4fd750c4421be6a28a9c542c156702d1d78b1cd7e2d0e793d6d4
5
5
  SHA512:
6
- metadata.gz: 64446564bbc1e08eecad5f27bb3a31e6c81a781220e5ecb8b91a557621f656e7cae2187e03771656aa382e1793f7218f954b42a93281cbd7d3e3cb67c71a6ea2
7
- data.tar.gz: 3da0f1d81b73649ecd3ab77ab5789b0407be5748584a4003907afc67bd6bc935e2cf597dc94c3c4aab7338cb4cceea86bbe0cfb3694895651536ed5263143a21
6
+ metadata.gz: b08d0f45114f017908ba3eed8356575d66754286d89941458b380c6f14028174c0a1503454661117d612d696d25d4c646d4aee42c479acc94b61c81f7316f2f3
7
+ data.tar.gz: b21dcc6aa7a5d80186a174d5f17a73500809815351f716665a8426030abf6dd9eb7811b70a720eb6aabe0696d2ec57a9ed53476732d61dbc1e6424190e37de99
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.25] - 2026-08-03
34
+
35
+ - TAG: [v1.2.25][1.2.25t]
36
+ - COVERAGE: 93.94% -- 4698/5001 lines in 31 files
37
+ - BRANCH COVERAGE: 76.54% -- 1843/2408 branches in 31 files
38
+ - 29.31% documented
39
+
40
+ ### Fixed
41
+
42
+ - Fail release planning when dependency cycles lack an explicit release wave.
43
+
44
+ - Repair stale dependency checksums before retrying family release lockfiles
45
+
33
46
  ## [1.2.24] - 2026-08-03
34
47
 
35
48
  - TAG: [v1.2.24][1.2.24t]
@@ -1681,7 +1694,9 @@ Please file a bug if you notice a violation of semantic versioning.
1681
1694
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
1682
1695
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
1683
1696
 
1684
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.24...HEAD
1697
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.25...HEAD
1698
+ [1.2.25]: https://github.com/kettle-dev/kettle-family/compare/v1.2.24...v1.2.25
1699
+ [1.2.25t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.25
1685
1700
  [1.2.24]: https://github.com/kettle-dev/kettle-family/compare/v1.2.23...v1.2.24
1686
1701
  [1.2.24t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.24
1687
1702
  [1.2.23]: https://github.com/kettle-dev/kettle-family/compare/v1.2.22...v1.2.23
data/README.md CHANGED
@@ -828,7 +828,7 @@ Thanks for RTFM. ☺️
828
828
  [📌gitmoji]: https://gitmoji.dev
829
829
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
830
830
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
831
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-4.994-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
831
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.001-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
832
832
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
833
833
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
834
834
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -3,9 +3,10 @@
3
3
  module Kettle
4
4
  module Family
5
5
  class ReleaseWaves
6
- def initialize(members:, configured_waves: [])
6
+ def initialize(members:, configured_waves: [], strict_cycles: false)
7
7
  @members = members
8
8
  @configured_waves = configured_waves
9
+ @strict_cycles = strict_cycles
9
10
  end
10
11
 
11
12
  def waves
@@ -18,7 +19,7 @@ module Kettle
18
19
 
19
20
  private
20
21
 
21
- attr_reader :members, :configured_waves
22
+ attr_reader :members, :configured_waves, :strict_cycles
22
23
 
23
24
  def configured_waves_for_selected_members
24
25
  duplicates = configured_waves.flatten.group_by(&:itself).select { |_name, names| names.length > 1 }.keys
@@ -52,6 +53,10 @@ module Kettle
52
53
  wave_names = hard_ready.select do |name|
53
54
  selected_dependencies_for(by_name.fetch(name), by_name).all? { |dependency| completed.include?(dependency) }
54
55
  end
56
+ if wave_names.empty? && strict_cycles
57
+ raise Error,
58
+ "cyclic release dependency order: #{pending.join(", ")}; configure release.waves to break the cycle"
59
+ end
55
60
  wave_names = [hard_ready.first] if wave_names.empty?
56
61
 
57
62
  planned_waves << wave_names.map { |name| by_name.fetch(name) }
@@ -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.24"
8
+ VERSION = "1.2.25"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -1117,7 +1117,7 @@ module Kettle
1117
1117
  end
1118
1118
 
1119
1119
  def release_waves(release_members)
1120
- ReleaseWaves.new(members: release_members, configured_waves: config.release_waves).waves
1120
+ ReleaseWaves.new(members: release_members, configured_waves: config.release_waves, strict_cycles: true).waves
1121
1121
  end
1122
1122
 
1123
1123
  def append_dependency_floor_results(released_members:, dependent_members:, runner:, memo:)
@@ -1182,6 +1182,7 @@ module Kettle
1182
1182
  def wait_for_dependency_floor_lockfiles_result(member:, released_members:, runner:)
1183
1183
  result = nil
1184
1184
  REGISTRY_WAIT_ATTEMPTS.times do |index|
1185
+ attempts = index + 1
1185
1186
  emit_dependency_floor_lockfile_progress(member: member, attempt: index + 1)
1186
1187
  result = runner.call(
1187
1188
  member: member,
@@ -1189,8 +1190,17 @@ module Kettle
1189
1190
  command: dependency_floor_lockfile_command(released_members),
1190
1191
  env: release_lockfile_env(member)
1191
1192
  )
1193
+ if repair_checksum_mismatches(member, result)
1194
+ attempts += 1
1195
+ result = runner.call(
1196
+ member: member,
1197
+ phase: "dependency_floor_lockfiles",
1198
+ command: dependency_floor_lockfile_command(released_members),
1199
+ env: release_lockfile_env(member)
1200
+ )
1201
+ end
1192
1202
  validate_dependency_floor_lockfile_result(result: result, member: member, released_members: released_members) if result.ok?
1193
- annotate_dependency_floor_lockfile_result(result, index + 1)
1203
+ annotate_dependency_floor_lockfile_result(result, attempts)
1194
1204
  break if result.ok?
1195
1205
 
1196
1206
  sleep(REGISTRY_WAIT_INTERVAL_SECONDS) if index + 1 < REGISTRY_WAIT_ATTEMPTS
@@ -2899,7 +2909,7 @@ module Kettle
2899
2909
  return false unless execute
2900
2910
  return false if result.ok?
2901
2911
 
2902
- line_numbers = checksum_mismatch_lockfile_lines(result.stderr)
2912
+ line_numbers = checksum_mismatch_lockfile_lines([result.stdout, result.stderr].join("\n"))
2903
2913
  return false if line_numbers.empty?
2904
2914
 
2905
2915
  lockfile = File.join(member.root, "Gemfile.lock")
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.24
4
+ version: 1.2.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -74,7 +74,7 @@ dependencies:
74
74
  version: '2.3'
75
75
  - - ">="
76
76
  - !ruby/object:Gem::Version
77
- version: 2.5.16
77
+ version: 2.5.18
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
@@ -84,7 +84,7 @@ dependencies:
84
84
  version: '2.3'
85
85
  - - ">="
86
86
  - !ruby/object:Gem::Version
87
- version: 2.5.16
87
+ version: 2.5.18
88
88
  - !ruby/object:Gem::Dependency
89
89
  name: kettle-test
90
90
  requirement: !ruby/object:Gem::Requirement
@@ -345,10 +345,10 @@ licenses:
345
345
  - AGPL-3.0-only
346
346
  metadata:
347
347
  homepage_uri: https://kettle-family.galtzo.com
348
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.24
349
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.24/CHANGELOG.md
348
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.25
349
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.25/CHANGELOG.md
350
350
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
351
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.24
351
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.25
352
352
  funding_uri: https://github.com/sponsors/pboling
353
353
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
354
354
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file