kettle-family 1.2.92 → 1.2.93

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: c1646ca3577c370624800077609c69c0decd4a50ad6924e82cfe3c050c1757df
4
- data.tar.gz: 361e0ac1cd39a97b442d3296635055b5bd34c24ced7d3944cec4a0984df6babb
3
+ metadata.gz: a1a24d4a7f560730b58dea502aa74c1f7c2b6b5821c92bc565ee5d0eff79d8be
4
+ data.tar.gz: 58f47810263c6279e727419acb896abb959ccac76bff444c83b19c88c85f64f5
5
5
  SHA512:
6
- metadata.gz: fa89492878000e8fa0b08b244b95a432ddb96e11130da0d4655087580b63260242b00f28a3f76af32c3a9dc8d9d2830f815f22f960f5c835b4b3af851196b510
7
- data.tar.gz: 1a801e2a97fdb2726e8ac282f88686e87aff42b680b54e2798b09bd70aa4e6be3678e9bf45625ab057a3d2210e99cd59eeeba31fd2761880f27cabc2b53a1566
6
+ metadata.gz: 7bb4085cb68b1d1ee1592ad1ab43d55afbc08a4c12a341ffffb6f1b3d712f43e51e0b8b4f59095fdd8402e1fa7c21822d6b43da8c8bd4caf340e102418d2974c
7
+ data.tar.gz: c12db5ebfea5489500b221fbc39f8d638fc6f4ad119eb73a210e195b779804325be2effad8970a78b65f7a5f0b837a9d324bb12242ab33c61b782877de5d6343
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,17 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.2.93] - 2026-09-07
34
+
35
+ - TAG: [v1.2.93][1.2.93t]
36
+ - COVERAGE: 93.54% -- 6165/6591 lines in 35 files
37
+ - BRANCH COVERAGE: 78.08% -- 2507/3211 branches in 35 files
38
+ - 32.41% documented
39
+
40
+ ### Fixed
41
+
42
+ - Update family-root bundles before member bundles for bup and bupb, committing the root lockfile only when the family is a monorepo.
43
+
33
44
  ## [1.2.92] - 2026-09-07
34
45
 
35
46
  - TAG: [v1.2.92][1.2.92t]
@@ -2616,7 +2627,9 @@ Please file a bug if you notice a violation of semantic versioning.
2616
2627
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
2617
2628
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
2618
2629
 
2619
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.92...HEAD
2630
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.93...HEAD
2631
+ [1.2.93]: https://github.com/kettle-dev/kettle-family/compare/v1.2.92...v1.2.93
2632
+ [1.2.93t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.93
2620
2633
  [1.2.92]: https://github.com/kettle-dev/kettle-family/compare/v1.2.91...v1.2.92
2621
2634
  [1.2.92t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.92
2622
2635
  [1.2.91]: https://github.com/kettle-dev/kettle-family/compare/v1.2.90...v1.2.91
data/README.md CHANGED
@@ -496,8 +496,8 @@ The command names below are available from `kettle-family --help`:
496
496
  | `docs` | Run the configured documentation workflow for each selected member. |
497
497
  | `template` | Apply the configured `kettle-jem` template for each selected member. |
498
498
  | `gha-sha-pins` | Inspect or update GitHub Actions SHA pins. |
499
- | `bup` | Run `bundle update --all`, or update a named dependency, per member. |
500
- | `bupb` | Run `bundle update --bundler` per member. |
499
+ | `bup` | Run `bundle update --all`, or update a named dependency, at the family root and per member. |
500
+ | `bupb` | Run `bundle update --bundler` at the family root and per member. |
501
501
  | `bex` | Run an arbitrary `bundle exec` command per member. |
502
502
  | `install` | Build and install selected local family gems. |
503
503
  | `bump` | Check, plan, or execute family version alignment. |
@@ -596,10 +596,17 @@ kettle-family bup --execute
596
596
  kettle-family template --execute
597
597
  ```
598
598
 
599
- `bup` runs `bundle update --all` for every selected member. A gem name may be
600
- passed to update only that dependency, for example `kettle-family bup --execute
601
- kettle-test`. Executed updates commit successful lockfile changes by default;
602
- use `--no-commit` for a working-tree-only refresh, or `--commit` to state the
599
+ `bup` first runs `bundle update --all` at the family root when that root has a
600
+ `Gemfile`, then runs it for every selected member. `bupb` follows the same
601
+ root-first order with `bundle update --bundler`. A root that is itself a member
602
+ is updated only once. A gem name may be passed to `bup` to update only that
603
+ dependency, for example `kettle-family bup --execute kettle-test`.
604
+
605
+ Executed member updates commit successful lockfile changes by default. The
606
+ family-root lockfile is also validated and committed for monorepos, where the
607
+ root and members share one Git repository. A sibling-repository family root is
608
+ updated for its orchestration bundle but is not included in any member commit.
609
+ Use `--no-commit` for a working-tree-only refresh, or `--commit` to state the
603
610
  default explicitly. Local dependency environment variables are preserved when
604
611
  explicitly supplied, so use the family's local or released dependency mode
605
612
  deliberately before running it.
@@ -1137,7 +1144,7 @@ Thanks for RTFM. ☺️
1137
1144
  [📌gitmoji]: https://gitmoji.dev
1138
1145
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1139
1146
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1140
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.570-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1147
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.591-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1141
1148
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
1142
1149
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1143
1150
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -702,6 +702,7 @@ module Kettle
702
702
 
703
703
  def resume_hint_for(result)
704
704
  return release_resume_hint(result) if command == "release"
705
+ return "kettle-family #{command}" if result.phase.start_with?("family_root_") || result.phase == "commit_family_root_bundle_update"
705
706
 
706
707
  "kettle-family #{command} --start-at #{result.member_name}"
707
708
  end
@@ -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.92"
8
+ VERSION = "1.2.93"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -575,6 +575,9 @@ module Kettle
575
575
 
576
576
  runner = CommandRunner.new(execute: execute, accept: accept)
577
577
  results = []
578
+ update_family_root_bundle(runner: runner, memo: results) if %w[bup bupb].include?(command)
579
+ return results unless results.all?(&:ok?)
580
+
578
581
  if command == "gha-sha-pins" && execute
579
582
  return results unless review_gha_sha_pins(workflow_members, runner: runner, memo: results)
580
583
  end
@@ -617,6 +620,39 @@ module Kettle
617
620
  results
618
621
  end
619
622
 
623
+ def update_family_root_bundle(runner:, memo:)
624
+ return unless family_root_bundle_update_required?
625
+
626
+ root_member = family_member
627
+ memo << runner.call(
628
+ member: root_member,
629
+ phase: "family_root_#{command}",
630
+ command: workflow_command,
631
+ env: command_env
632
+ )
633
+ return unless memo.last.ok?
634
+ return unless family_root_bundle_commit?
635
+ return unless validate_bundle_update_lockfile(
636
+ member: root_member,
637
+ memo: memo,
638
+ phase: "family_root_bundle_update_readiness"
639
+ )
640
+
641
+ commit_family_root_bundle_update(member: root_member, runner: runner, memo: memo)
642
+ end
643
+
644
+ def family_root_bundle_update_required?
645
+ return false unless File.file?(File.join(config.root, "Gemfile"))
646
+
647
+ family_members.none? do |member|
648
+ File.expand_path(member.root) == File.expand_path(config.root)
649
+ end
650
+ end
651
+
652
+ def family_root_bundle_commit?
653
+ commit && config.family_mode == "monorepo"
654
+ end
655
+
620
656
  # Sibling repositories have isolated working trees and can run their
621
657
  # tests concurrently. A monorepo's default kettle-test command normally
622
658
  # executes the shared root suite, so it is represented by one selected
@@ -5529,13 +5565,13 @@ module Kettle
5529
5565
  memo << result
5530
5566
  end
5531
5567
 
5532
- def validate_bundle_update_lockfile(member:, memo:)
5568
+ def validate_bundle_update_lockfile(member:, memo:, phase: "bundle_update_readiness")
5533
5569
  return true unless execute && commit
5534
5570
 
5535
5571
  diagnostics = bundle_update_lockfile_diagnostics(member)
5536
5572
  result = CommandResult.new(
5537
5573
  member.name,
5538
- "bundle_update_readiness",
5574
+ phase,
5539
5575
  ["internal", "bundle-update-readiness"],
5540
5576
  member.root,
5541
5577
  diagnostics.empty? ? 0 : 1,
@@ -5550,6 +5586,22 @@ module Kettle
5550
5586
  result.ok?
5551
5587
  end
5552
5588
 
5589
+ def commit_family_root_bundle_update(member:, runner:, memo:)
5590
+ return unless family_root_bundle_commit?
5591
+
5592
+ result = runner.call(
5593
+ member: member,
5594
+ phase: "commit_family_root_bundle_update",
5595
+ command: [
5596
+ "sh",
5597
+ "-lc",
5598
+ "files=$(git ls-files --modified --others --exclude-standard -- Gemfile.lock); " \
5599
+ "if [ -n \"$files\" ]; then git add -- Gemfile.lock && git commit --only -m '🔒️ Update family root bundle' -- Gemfile.lock; fi"
5600
+ ]
5601
+ )
5602
+ memo << result
5603
+ end
5604
+
5553
5605
  def bundle_update_lockfile_diagnostics(member)
5554
5606
  ReadinessCheck.call(
5555
5607
  member: member,
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.92
4
+ version: 1.2.93
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -443,10 +443,10 @@ licenses:
443
443
  - AGPL-3.0-only
444
444
  metadata:
445
445
  homepage_uri: https://kettle-family.galtzo.com
446
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.92
447
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.92/CHANGELOG.md
446
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.93
447
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.93/CHANGELOG.md
448
448
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
449
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.92
449
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.93
450
450
  funding_uri: https://github.com/sponsors/pboling
451
451
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
452
452
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file