kettle-family 1.3.22 → 1.3.24

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: 96db982e6915d29a69f7d70da67d8bc64cba1ac9d2e5c98cfc6f25a0007a8915
4
- data.tar.gz: 18df52948a5ed1578f0c1d65d1da40fe93b3c13cd16bec671849651eb3cade02
3
+ metadata.gz: fb4b30fa1f9686486190145163ab60e6cefb229baa32a20c998d68ba922839a6
4
+ data.tar.gz: 3907e7ac24a0b8e2292aac9bcf994a4af8dc26ed65815de6a938b2ebc595c8f7
5
5
  SHA512:
6
- metadata.gz: 543de4d2b9c10fe77cb0ed64231b381bd3c2553def379d4af9d4c84429821f0ddda8f6c300fcad022fe529654d8d11eb496afd3927c2a4d9b83bc5a1d3417d69
7
- data.tar.gz: 36b14df59d36b187d978391d3e0e4be771f241e8eb816be8e13b01e703b56c957ee51d5545aa8f68c85f3575c1a0227d72b0a69ede2b9b29bacfe2775f3450d8
6
+ metadata.gz: e5453963f37698bc584bcd170b5856f1080fa37b5a85a3635806809a785bb3da15efbe11e5020933a27e8ae9a769cb7b40db6a109606cece50c0f012fb37d857
7
+ data.tar.gz: f0a93ff85d5881c187eae578b26e87e083424bf3e5646e4573b80ca0c1468d70a176fc2b365da1da538fb82a48fa2c198a5e38fbfa194fb45fb51a8d040bae0a
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.3.24] - 2026-10-19
34
+
35
+ - TAG: [v1.3.24][1.3.24t]
36
+ - COVERAGE: 93.01% -- 7372/7926 lines in 44 files
37
+ - BRANCH COVERAGE: 77.25% -- 2947/3815 branches in 44 files
38
+ - 37.55% documented
39
+
40
+ ### Fixed
41
+
42
+ - [kc] bup-nomono-bootstrap: Add a bup bootstrap phase that bumps stale nomono floors and reconciles member lockfiles with a pinned nomono update before member bundle update --all, so family-root floor raises no longer deadlock on older activated nomono releases. Dry-run bup plans the reconciliation without editing files.
43
+
44
+ ## [1.3.23] - 2026-10-19
45
+
46
+ - TAG: [v1.3.23][1.3.23t]
47
+ - COVERAGE: 93.00% -- 7352/7905 lines in 44 files
48
+ - BRANCH COVERAGE: 77.31% -- 2937/3799 branches in 44 files
49
+ - 37.55% documented
50
+
51
+ ### Fixed
52
+
53
+ - Template dependency preparation records its changelog entries where the family config says changelogs go (K_CHANGELOG_PATH resolved from changelog mode/path), so a shared-changelog family no longer gets transferred template entries written into a member-local CHANGELOG.md — which split a lock-step member into its own release lane.
54
+
33
55
  ## [1.3.22] - 2026-10-19
34
56
 
35
57
  - TAG: [v1.3.22][1.3.22t]
@@ -3121,7 +3143,11 @@ Please file a bug if you notice a violation of semantic versioning.
3121
3143
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
3122
3144
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
3123
3145
 
3124
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.3.22...HEAD
3146
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.3.24...HEAD
3147
+ [1.3.24]: https://github.com/kettle-dev/kettle-family/compare/v1.3.23...v1.3.24
3148
+ [1.3.24t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.3.24
3149
+ [1.3.23]: https://github.com/kettle-dev/kettle-family/compare/v1.3.22...v1.3.23
3150
+ [1.3.23t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.3.23
3125
3151
  [1.3.22]: https://github.com/kettle-dev/kettle-family/compare/v1.3.21...v1.3.22
3126
3152
  [1.3.22t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.3.22
3127
3153
  [1.3.21]: https://github.com/kettle-dev/kettle-family/compare/v1.3.18...v1.3.21
data/README.md CHANGED
@@ -1225,7 +1225,7 @@ Thanks for RTFM. ☺️
1225
1225
  [📌gitmoji]: https://gitmoji.dev
1226
1226
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1227
1227
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1228
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-7.901-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1228
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-7.926-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1229
1229
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
1230
1230
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1231
1231
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -10,12 +10,13 @@ module Kettle
10
10
  class NomonoBootstrap
11
11
  GEM_NAME = "nomono"
12
12
 
13
- def initialize(latest_version:, mode: :dry_run)
13
+ def initialize(latest_version:, mode: :dry_run, phase: "template_bootstrap_dependencies")
14
14
  @latest_version = Gem::Version.new(latest_version.to_s)
15
15
  @mode = mode
16
+ @phase = phase
16
17
  end
17
18
 
18
- attr_reader :latest_version, :mode
19
+ attr_reader :latest_version, :mode, :phase
19
20
 
20
21
  def member_needs_bootstrap?(member)
21
22
  !!(gemfile_floor_outdated?(member) || lockfile_version_outdated?(member))
@@ -26,7 +27,7 @@ module Kettle
26
27
  write_edits(edits)
27
28
  CommandResult.new(
28
29
  member.name,
29
- "template_bootstrap_dependencies",
30
+ phase,
30
31
  ["internal", "nomono-bootstrap", latest_version.to_s],
31
32
  member.root,
32
33
  0,
@@ -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.3.22"
8
+ VERSION = "1.3.24"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -578,6 +578,9 @@ module Kettle
578
578
  update_family_root_bundle(runner: runner, memo: results) if %w[bup bupb update-bundler].include?(command)
579
579
  return results unless results.all?(&:ok?)
580
580
 
581
+ results.concat(bup_bootstrap_dependency_results(workflow_members, runner: runner, memo: results)) if %w[bup bupb update-bundler].include?(command)
582
+ return results unless results.all?(&:ok?)
583
+
581
584
  if %w[bup bupb update-bundler].include?(command) && release_mode_bundle_update?
582
585
  results.concat(release_pre_clean_results(runner: runner))
583
586
  return results unless results.last.nil? || results.last.ok?
@@ -1324,6 +1327,53 @@ module Kettle
1324
1327
  )
1325
1328
  end
1326
1329
 
1330
+ # Before a bundle update resolves the dependency graph, the member's
1331
+ # bootstrap must declare and lock the newest Nomono floor, otherwise the
1332
+ # generated bootstrap activates an older installed release and Bundler
1333
+ # rejects the duplicate requirement raised by the family-root floor bump.
1334
+ # This is the bup analogue of template_bootstrap_dependency_results.
1335
+ def bup_bootstrap_dependency_results(workflow_members, runner:, memo:)
1336
+ return [] if workflow_members.empty?
1337
+
1338
+ candidate_members = workflow_members.select { |member| nomono_bootstrap_candidate?(member) }
1339
+ return [] if candidate_members.empty?
1340
+
1341
+ latest_nomono_version = latest_released_nomono_version
1342
+ bootstrap = NomonoBootstrap.new(
1343
+ latest_version: latest_nomono_version,
1344
+ mode: execute ? :execute : :dry_run,
1345
+ phase: "bup_bootstrap_dependencies"
1346
+ )
1347
+ candidate_members.each_with_object([]) do |member, results|
1348
+ next unless bootstrap.member_needs_bootstrap?(member)
1349
+
1350
+ floor_result = bootstrap.bootstrap_member(member)
1351
+ results << floor_result
1352
+ break results unless results.last.ok?
1353
+
1354
+ results << runner.call(
1355
+ member: member,
1356
+ phase: "bup_bootstrap_dependencies",
1357
+ command: pinned_bundler_update_command(extra_gems: %w[nomono]),
1358
+ env: bup_bootstrap_dependency_env(member)
1359
+ )
1360
+ break results unless results.last.ok?
1361
+ end
1362
+ rescue => error
1363
+ [template_bootstrap_failure_result(workflow_members.first, error.message)]
1364
+ end
1365
+
1366
+ def bup_bootstrap_dependency_env(member)
1367
+ bundle_update_env.merge(
1368
+ # A standalone update re-resolves against the member's own bundle. The
1369
+ # member Gemfile bootstrap floor has already been bumped; here we only
1370
+ # reconcile the member lockfile for that gem, so the subsequent member
1371
+ # Gemfile.lock is not stale and the new floor resolves from the family
1372
+ # root local path instead of activating an older installed release.
1373
+ "BUNDLE_GEMFILE" => "#{member.root}/Gemfile"
1374
+ )
1375
+ end
1376
+
1327
1377
  def template_bootstrap_dependency_results(workflow_members)
1328
1378
  return [] if workflow_members.empty?
1329
1379
 
@@ -5776,6 +5826,20 @@ module Kettle
5776
5826
  exclusions = compute_local_gem_exclusions(member)
5777
5827
  env["KETTLE_JEM_LOCAL_GEM_EXCLUSIONS"] = exclusions.join(",") unless exclusions.empty?
5778
5828
  end
5829
+ # Template dependency preparation records what it changed as changelog
5830
+ # entries. Changelogs go where the family config says they go — the
5831
+ # family root changelog for shared-changelog families, each member's
5832
+ # own otherwise — exactly like add-changelog. Without this, prepare
5833
+ # writes transferred entries into a member-local CHANGELOG.md even
5834
+ # when the family shares one, splitting a lock-step member into its
5835
+ # own release lane.
5836
+ if kettle_jem_template_command?(config.template_command || default_template_command(member))
5837
+ if config&.shared_changelog?
5838
+ env["K_CHANGELOG_PATH"] = File.expand_path(config.changelog_path, config.root)
5839
+ elsif member
5840
+ env["K_CHANGELOG_PATH"] = File.join(member.root, "CHANGELOG.md")
5841
+ end
5842
+ end
5779
5843
  tool_gemfile = local_kettle_jem_gemfile if member && local_nomono_path_locked?(member)
5780
5844
  # Nomono's existing generated bootstrap can activate an installed
5781
5845
  # release before Bundler resolves a path-locked local Nomono. Start
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.3.22
4
+ version: 1.3.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -567,10 +567,10 @@ licenses:
567
567
  - AGPL-3.0-only
568
568
  metadata:
569
569
  homepage_uri: https://kettle-family.galtzo.com
570
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.3.22
571
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.3.22/CHANGELOG.md
570
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.3.24
571
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.3.24/CHANGELOG.md
572
572
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
573
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.3.22
573
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.3.24
574
574
  funding_uri: https://github.com/sponsors/pboling
575
575
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
576
576
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file