kettle-family 1.2.63 → 1.2.64

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: 82adc3fa76e0f5e3cea98f7a02152627353175b2e0aa2b922eeb4905aee9f1a8
4
- data.tar.gz: 70094edc544adbdec3240787de1c2e7c8b22e749fe8dfb9e9dca0d97253d00f3
3
+ metadata.gz: 8f4a6c96b0c56553af85dc48776c9ef380f6fd5800a1f30a43c9d2248fba4808
4
+ data.tar.gz: 55e68a0f07097017844c35ba1b071fe6d2bcb989a7e054e6e0ec4e7efed78d32
5
5
  SHA512:
6
- metadata.gz: 571b5e2c915f5dcfa9e5415b6d4a0762f30c6fe005c248c7dd42285f3960f452b74fa8063c5ee05e9eddb2d116c7e5204c353eaed877428727ad238ba83e2d42
7
- data.tar.gz: 7f7f630a5f1b06d17ffe8eeb5bef4a20579788bd0b4cebea30c0468763bdbba72cb8507920fe076396124b3cc91efe5ab30c683864a9d9bc4c523b5738142162
6
+ metadata.gz: aeab70a0e11ad88e43c23de8b0f408006de80a0e551612d777649c159d8ef869fe711a593d0b19706d12df94e17d6dc15fb532b9043a2f67092acf81e71ffd76
7
+ data.tar.gz: b23ee38b5cd4e71d766fdbcf8543a5a59fcb8a6b7502014f2daea60d47651f02159f0aecf8632f13f3d428bcc17c26ba6678fcffa073672dd34fc6ed07bbfbc0
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,29 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.2.64] - 2026-08-29
34
+
35
+ - TAG: [v1.2.64][1.2.64t]
36
+ - COVERAGE: 93.10% -- 5383/5782 lines in 33 files
37
+ - BRANCH COVERAGE: 76.04% -- 2171/2855 branches in 33 files
38
+ - 30.00% documented
39
+
40
+ ### Changed
41
+
42
+ - Make temporary CI/Appraisal dependency-bundle validation opt-in with release.validate_ci_bundles or --validate-ci-bundles.
43
+
44
+ ### Fixed
45
+
46
+ - Avoid refreshing inactive conditional Gemfile dependencies during release lockfile reconciliation.
47
+
48
+ - Avoid probing inactive conditional Gemfile dependencies before release reconciliation.
49
+
50
+ - Show dependency-floor reconciliation retries before release waves begin.
51
+
52
+ - Refresh each CI dependency bundle only for family dependencies declared by that bundle.
53
+
54
+ - Validate mixed release-state selectors before probing member release state.
55
+
33
56
  ## [1.2.63] - 2026-08-28
34
57
 
35
58
  - TAG: [v1.2.63][1.2.63t]
@@ -2245,7 +2268,9 @@ Please file a bug if you notice a violation of semantic versioning.
2245
2268
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
2246
2269
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
2247
2270
 
2248
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.63...HEAD
2271
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.64...HEAD
2272
+ [1.2.64]: https://github.com/kettle-dev/kettle-family/compare/v1.2.63...v1.2.64
2273
+ [1.2.64t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.64
2249
2274
  [1.2.63]: https://github.com/kettle-dev/kettle-family/compare/v1.2.62...v1.2.63
2250
2275
  [1.2.63t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.63
2251
2276
  [1.2.62]: https://github.com/kettle-dev/kettle-family/compare/v1.2.61...v1.2.62
data/README.md CHANGED
@@ -284,12 +284,17 @@ bundle lock --update RELEASED_MEMBER_NAMES --add-checksums
284
284
 
285
285
  It then installs that exact locked bundle before starting the dependent release.
286
286
 
287
- The same targeted refresh is applied to the member's CI/Appraisal bundle
288
- lockfiles when those files are present. The refreshed lockfiles and dependency
289
- floor changes are committed before that member's release starts, so later
290
- waves test and publish against the versions produced by earlier waves rather
291
- than stale published versions. A resumed `--only pend` publish also reconciles
292
- family dependencies that were published by an earlier invocation.
287
+ The root lockfile refresh and dependency-floor changes are committed before
288
+ that member's release starts, so later waves test and publish against the
289
+ versions produced by earlier waves rather than stale published versions. A
290
+ resumed `--only pend` publish also reconciles family dependencies that were
291
+ published by an earlier invocation.
292
+
293
+ Use `--validate-ci-bundles` (or `release.validate_ci_bundles: true`) to also
294
+ resolve each CI/Appraisal Gemfile into a temporary lockfile after the root
295
+ refresh. These temporary lockfiles are not committed; this is an optional
296
+ early registry-resolution gate for coordinated releases where waiting for CI
297
+ would be too late to discover an incompatible dependency floor.
293
298
 
294
299
  This propagation runs for `kettle-family release --execute --publish` when
295
300
  `release.auto_dependency_floors` is enabled (the default). It is distinct from
@@ -975,7 +980,7 @@ Thanks for RTFM. ☺️
975
980
  [📌gitmoji]: https://gitmoji.dev
976
981
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
977
982
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
978
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.729-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
983
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.782-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
979
984
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
980
985
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
981
986
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -547,6 +547,7 @@ module Kettle
547
547
  option :no_auto_floors, long: "--no-auto-floors", desc: "Do not raise family dependency floors between member releases" do
548
548
  options[:no_auto_floors] = true
549
549
  end
550
+ option :validate_ci_bundles, long: "--validate-ci-bundles", desc: "Validate temporary CI/Appraisal bundle locks after dependency-floor refreshes"
550
551
  option :accept, desc: "Answer yes to confirmation prompts in interactive commands"
551
552
  option :no_accept, long: "--no-accept", desc: "Wait for user input at confirmation prompts" do
552
553
  options[:accept] = false
@@ -573,6 +574,7 @@ module Kettle
573
574
  release_required_remotes: options[:required_remotes],
574
575
  release_secrets_provider: options[:secrets_provider],
575
576
  release_auto_dependency_floors: !truthy_option?(:no_auto_floors),
577
+ release_validate_ci_bundles: truthy_option?(:validate_ci_bundles),
576
578
  accept: !options.key?(:accept) || options[:accept],
577
579
  tag: truthy_option?(:tag),
578
580
  push: truthy_option?(:push)
@@ -685,6 +687,7 @@ module Kettle
685
687
  Orderer.new(members: members, mode: config.order_mode, hints: config.order_hints).ordered
686
688
  end
687
689
  state_event_tape = release_state_event_tape(command: command, config: config, options: options)
690
+ Selection.validate_release_state_only_filter!(effective_only)
688
691
  release_state_results = release_state_results_for_selection(config: config, members: ordered, only: effective_only, jobs: options[:jobs])
689
692
  selected = Selection.new(
690
693
  members: ordered,
@@ -849,6 +852,7 @@ module Kettle
849
852
  required_remotes: options[:release_required_remotes],
850
853
  secrets_provider: release_secrets_provider(command: command, config: config, options: options),
851
854
  auto_dependency_floors: options[:release_auto_dependency_floors],
855
+ validate_ci_bundles: options[:release_validate_ci_bundles],
852
856
  gha_sha_pins_upgrade: options[:gha_sha_pins_upgrade],
853
857
  gha_sha_pins_check: options[:check],
854
858
  gha_sha_pins_ttl_days: options[:gha_sha_pins_ttl_days],
@@ -284,6 +284,10 @@ module Kettle
284
284
  fetch_path("release", "auto_dependency_floors") != false
285
285
  end
286
286
 
287
+ def release_validate_ci_bundles?
288
+ fetch_path("release", "validate_ci_bundles") == true
289
+ end
290
+
287
291
  def release_family_changelog?
288
292
  fetch_path("release", "family_changelog", "enabled") == true
289
293
  end
@@ -21,6 +21,15 @@ module Kettle
21
21
  STATUS_TOKEN_KEYS.key?(value.to_s)
22
22
  end
23
23
 
24
+ def self.validate_release_state_only_filter!(only)
25
+ names = only.to_s.split(",").map(&:strip).reject(&:empty?)
26
+ status_tokens = names.select { |name| status_token?(name) }
27
+ return if status_tokens.empty?
28
+
29
+ member_names = names - status_tokens
30
+ raise Error, "--only release-state tokens cannot be combined with member names: #{member_names.join(", ")}" unless member_names.empty?
31
+ end
32
+
24
33
  def initialize(members:, release_state_results: nil, shared_version: false)
25
34
  @members = members
26
35
  @release_state_results = release_state_results
@@ -47,8 +56,7 @@ module Kettle
47
56
 
48
57
  status_tokens = names.select { |name| self.class.status_token?(name) }
49
58
  unless status_tokens.empty?
50
- member_names = names - status_tokens
51
- raise Error, "--only release-state tokens cannot be combined with member names: #{member_names.join(", ")}" unless member_names.empty?
59
+ self.class.validate_release_state_only_filter!(only)
52
60
 
53
61
  return select_release_state_status(selected, status_tokens)
54
62
  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.63"
8
+ VERSION = "1.2.64"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -106,7 +106,7 @@ module Kettle
106
106
  REGISTRY_WAIT_ATTEMPTS = 15
107
107
  REGISTRY_WAIT_INTERVAL_SECONDS = 15
108
108
 
109
- def initialize(command:, config:, members:, family_members: nil, execute: false, accept: true, commit: true, allow_dirty: false, autostash: true, template_cleanup: true, publish: false, push: false, tag: false, start_step: nil, skip_steps: nil, fast_recovery: nil, fast_recovery_members: nil, skip_ci: false, skip_changelog: false, local_ci: false, continue_ci_failures: false, ci_workflows: nil, skip_bundle_audit: false, skip_remotes: nil, required_remotes: nil, auto_dependency_floors: nil, gha_sha_pins_upgrade: "patch", gha_sha_pins_check: false, gha_sha_pins_ttl_days: nil, env_overrides: {}, debug: false, verbose: false, gem_signing_password: nil, secrets_provider: nil, jobs: nil, progress_io: nil, reset_target: nil, bup_args: [], bex_args: [], start_member: nil, start_branch: nil, **options)
109
+ def initialize(command:, config:, members:, family_members: nil, execute: false, accept: true, commit: true, allow_dirty: false, autostash: true, template_cleanup: true, publish: false, push: false, tag: false, start_step: nil, skip_steps: nil, fast_recovery: nil, fast_recovery_members: nil, skip_ci: false, skip_changelog: false, local_ci: false, continue_ci_failures: false, ci_workflows: nil, skip_bundle_audit: false, skip_remotes: nil, required_remotes: nil, auto_dependency_floors: nil, validate_ci_bundles: nil, gha_sha_pins_upgrade: "patch", gha_sha_pins_check: false, gha_sha_pins_ttl_days: nil, env_overrides: {}, debug: false, verbose: false, gem_signing_password: nil, secrets_provider: nil, jobs: nil, progress_io: nil, reset_target: nil, bup_args: [], bex_args: [], start_member: nil, start_branch: nil, **options)
110
110
  @command = command
111
111
  @config = config
112
112
  @members = members
@@ -143,6 +143,7 @@ module Kettle
143
143
  @skip_remotes = validate_remote_list(skip_remotes, "--skip-remotes")
144
144
  @required_remotes = validate_remote_list(required_remotes.nil? ? config.release_required_remotes : required_remotes, "--required-remotes")
145
145
  @auto_dependency_floors = auto_dependency_floors.nil? ? config.release_auto_dependency_floors? : auto_dependency_floors
146
+ @validate_ci_bundles = validate_ci_bundles.nil? ? config.release_validate_ci_bundles? : validate_ci_bundles
146
147
  @gha_sha_pins_upgrade = gha_sha_pins_upgrade
147
148
  @gha_sha_pins_check = gha_sha_pins_check
148
149
  @gha_sha_pins_ttl_days = gha_sha_pins_ttl_days.nil? ? 1.0 : gha_sha_pins_ttl_days.to_f
@@ -204,7 +205,7 @@ module Kettle
204
205
  execute && release_command_delegates_secrets_to_kettle_release?
205
206
  end
206
207
 
207
- attr_reader :command, :config, :members, :family_members, :execute, :accept, :commit, :allow_dirty, :autostash, :template_cleanup, :publish, :push, :tag, :start_step, :skip_steps, :fast_recovery, :fast_recovery_members, :skip_ci, :skip_changelog, :local_ci, :continue_ci_failures, :ci_workflows, :skip_bundle_audit, :skip_remotes, :required_remotes, :auto_dependency_floors, :gha_sha_pins_upgrade, :gha_sha_pins_check, :gha_sha_pins_ttl_days, :env_overrides, :debug, :verbose, :jobs, :progress_io, :reset_target, :bup_args, :bex_args, :start_member, :start_branch
208
+ attr_reader :command, :config, :members, :family_members, :execute, :accept, :commit, :allow_dirty, :autostash, :template_cleanup, :publish, :push, :tag, :start_step, :skip_steps, :fast_recovery, :fast_recovery_members, :skip_ci, :skip_changelog, :local_ci, :continue_ci_failures, :ci_workflows, :skip_bundle_audit, :skip_remotes, :required_remotes, :auto_dependency_floors, :validate_ci_bundles, :gha_sha_pins_upgrade, :gha_sha_pins_check, :gha_sha_pins_ttl_days, :env_overrides, :debug, :verbose, :jobs, :progress_io, :reset_target, :bup_args, :bex_args, :start_member, :start_branch
208
209
 
209
210
  def template_with_worktree_sync_results
210
211
  runner = command_runner
@@ -1461,14 +1462,43 @@ module Kettle
1461
1462
  published_members = published_family_dependencies_for(release_members)
1462
1463
  return [] if published_members.empty?
1463
1464
 
1464
- results = []
1465
- append_dependency_floor_results(
1466
- released_members: published_members,
1467
- dependent_members: release_members,
1468
- runner: release_command_runner,
1469
- memo: results
1465
+ with_dependency_floor_progress(release_members) do
1466
+ results = []
1467
+ append_dependency_floor_results(
1468
+ released_members: published_members,
1469
+ dependent_members: release_members,
1470
+ runner: release_command_runner,
1471
+ memo: results
1472
+ )
1473
+ results
1474
+ end
1475
+ end
1476
+
1477
+ # Startup reconciliation happens before release waves initialize their
1478
+ # progress renderer. Give its retrying Bundler work a dedicated renderer
1479
+ # so registry propagation is visible instead of appearing hung.
1480
+ def with_dependency_floor_progress(release_members)
1481
+ return yield if @release_progress
1482
+
1483
+ progress = start_dependency_floor_progress(release_members)
1484
+ @release_progress = progress
1485
+ yield
1486
+ ensure
1487
+ progress&.finish
1488
+ @release_progress = nil if progress
1489
+ end
1490
+
1491
+ def start_dependency_floor_progress(release_members)
1492
+ progress = WorkflowProgress.new(
1493
+ io: progress_io,
1494
+ label: "reconciling dependency floors for",
1495
+ total: release_members.length,
1496
+ jobs: 1,
1497
+ members: release_members
1470
1498
  )
1471
- results
1499
+ progress.start
1500
+ release_members.each { |member| progress.start_member(member, total: 0, status: "dependency floors") }
1501
+ progress
1472
1502
  end
1473
1503
 
1474
1504
  # A resumed --only pend release no longer includes members that finished
@@ -1476,7 +1506,9 @@ module Kettle
1476
1506
  # next release wave so those already-published versions still update
1477
1507
  # sibling floors and lockfiles.
1478
1508
  def published_family_dependencies_for(release_members)
1479
- dependency_names = release_members.flat_map { |member| release_dependency_names(member) }.uniq
1509
+ dependency_names = release_members.flat_map do |member|
1510
+ publish ? active_release_dependency_names(member) : release_dependency_names(member)
1511
+ end.uniq
1480
1512
  family_members_by_name = family_members.to_h { |member| [member.name, member] }
1481
1513
  dependency_names.filter_map do |dependency_name|
1482
1514
  member = family_members_by_name[dependency_name]
@@ -1497,6 +1529,14 @@ module Kettle
1497
1529
  lockfile_ready_dependent_members = affected_dependent_members.select do |member|
1498
1530
  dependency_floor_refresh_ready?(member, released_members: released_members)
1499
1531
  end
1532
+ lockfile_refresh_members = if execute && publish
1533
+ lockfile_ready_dependent_members.filter_map do |member|
1534
+ active_released_members = active_release_dependencies_for(member, released_members)
1535
+ [member, active_released_members] unless active_released_members.empty?
1536
+ end
1537
+ else
1538
+ []
1539
+ end
1500
1540
  floor_results = DependencyFloor.new(
1501
1541
  released_members: released_members,
1502
1542
  dependent_members: dependent_members,
@@ -1505,16 +1545,18 @@ module Kettle
1505
1545
  memo.concat(floor_results)
1506
1546
  return if floor_results.any? && !floor_results.all?(&:ok?)
1507
1547
 
1508
- append_dependency_floor_lockfile_results(released_members: released_members, dependent_members: lockfile_ready_dependent_members, runner: runner, memo: memo)
1548
+ append_dependency_floor_lockfile_results(dependent_members: lockfile_refresh_members, runner: runner, memo: memo)
1509
1549
  return if memo.any? && !memo.last.ok?
1510
1550
 
1511
- append_dependency_floor_bundle_install_results(dependent_members: lockfile_ready_dependent_members, runner: runner, memo: memo)
1551
+ append_dependency_floor_bundle_install_results(dependent_members: lockfile_refresh_members.map(&:first), runner: runner, memo: memo)
1512
1552
  return if memo.any? && !memo.last.ok?
1513
1553
 
1514
- append_dependency_floor_ci_bundle_results(released_members: released_members, dependent_members: lockfile_ready_dependent_members, runner: runner, memo: memo)
1515
- return if memo.any? && !memo.last.ok?
1554
+ if validate_ci_bundles
1555
+ append_dependency_floor_ci_bundle_results(dependent_members: lockfile_refresh_members, runner: runner, memo: memo)
1556
+ return if memo.any? && !memo.last.ok?
1557
+ end
1516
1558
 
1517
- reconciled_members = (floor_results.map(&:member_name) + lockfile_ready_dependent_members.map(&:name)).uniq
1559
+ reconciled_members = (floor_results.map(&:member_name) + lockfile_refresh_members.map { |member, _released_members| member.name }).uniq
1518
1560
  commit_dependency_floor_changes(dependent_members: reconciled_members, runner: runner, memo: memo) if reconciled_members.any? && execute && commit
1519
1561
  end
1520
1562
 
@@ -1540,23 +1582,72 @@ module Kettle
1540
1582
  Array(member.release_dependencies || member.dependencies).map(&:to_s)
1541
1583
  end
1542
1584
 
1543
- def append_dependency_floor_lockfile_results(released_members:, dependent_members:, runner:, memo:)
1585
+ # Prism-based discovery intentionally includes every literal Gemfile
1586
+ # declaration so release ordering is conservative. Lockfile refreshes
1587
+ # must instead use the Gemfile as evaluated in the release environment:
1588
+ # optional local/template declarations are not valid --update targets.
1589
+ def active_release_dependencies_for(member, released_members)
1590
+ runtime_names = Array(member.dependencies).map(&:to_s)
1591
+ gemfile_candidates = released_members.reject { |released_member| runtime_names.include?(released_member.name) }
1592
+ return released_members if gemfile_candidates.empty?
1593
+
1594
+ active_names = active_release_dependency_names(member)
1595
+ released_members.select { |released_member| active_names.include?(released_member.name) }
1596
+ end
1597
+
1598
+ def active_release_dependency_names(member)
1599
+ active_release_dependency_names_for_gemfile(member, File.join(member.root, "Gemfile"))
1600
+ end
1601
+
1602
+ def active_release_dependency_names_for_gemfile(member, gemfile)
1603
+ (Array(member.dependencies).map(&:to_s) + active_release_gemfile_dependency_names(member, gemfile)).reject do |name|
1604
+ name == member.name
1605
+ end
1606
+ end
1607
+
1608
+ def active_release_gemfile_dependency_names(member, gemfile = File.join(member.root, "Gemfile"))
1609
+ return [] unless File.file?(gemfile)
1610
+
1611
+ script = <<~RUBY
1612
+ require "bundler"
1613
+ dsl = Bundler::Dsl.evaluate(ARGV.fetch(0), nil, {})
1614
+ puts dsl.dependencies.map(&:name)
1615
+ RUBY
1616
+ stdout, stderr, status = Open3.capture3(
1617
+ release_lockfile_env(member).compact,
1618
+ RbConfig.ruby,
1619
+ "-e",
1620
+ script,
1621
+ gemfile,
1622
+ chdir: member.root
1623
+ )
1624
+ unless status.success?
1625
+ raise Error, "could not evaluate release Gemfile for #{member.name}: #{stderr.strip}"
1626
+ end
1627
+
1628
+ stdout.lines.map(&:strip).reject(&:empty?).uniq
1629
+ end
1630
+
1631
+ def append_dependency_floor_lockfile_results(dependent_members:, runner:, memo:)
1544
1632
  return unless execute && publish
1545
1633
  return if dependent_members.empty?
1546
1634
 
1547
- dependent_members.each do |member|
1635
+ dependent_members.each do |member, released_members|
1548
1636
  memo << wait_for_dependency_floor_lockfiles_result(member: member, released_members: released_members, runner: runner)
1549
1637
  break unless memo.last.ok?
1550
1638
  end
1551
1639
  end
1552
1640
 
1553
- def append_dependency_floor_ci_bundle_results(released_members:, dependent_members:, runner:, memo:)
1641
+ def append_dependency_floor_ci_bundle_results(dependent_members:, runner:, memo:)
1554
1642
  return unless execute && publish
1555
1643
  return if dependent_members.empty?
1556
1644
 
1557
- dependent_members.each do |member|
1645
+ dependent_members.each do |member, released_members|
1558
1646
  dependency_floor_ci_bundle_gemfiles(member).each do |gemfile|
1559
- memo << wait_for_dependency_floor_ci_bundle_result(member: member, gemfile: gemfile, released_members: released_members, runner: runner)
1647
+ gemfile_released_members = active_release_dependencies_for_gemfile(member, gemfile, released_members)
1648
+ next if gemfile_released_members.empty?
1649
+
1650
+ memo << wait_for_dependency_floor_ci_bundle_result(member: member, gemfile: gemfile, released_members: gemfile_released_members, runner: runner)
1560
1651
  break unless memo.last.ok?
1561
1652
  end
1562
1653
  break if memo.any? && !memo.last.ok?
@@ -1686,6 +1777,11 @@ module Kettle
1686
1777
  end.uniq.sort
1687
1778
  end
1688
1779
 
1780
+ def active_release_dependencies_for_gemfile(member, gemfile, released_members)
1781
+ active_names = active_release_dependency_names_for_gemfile(member, gemfile)
1782
+ released_members.select { |released_member| active_names.include?(released_member.name) }
1783
+ end
1784
+
1689
1785
  def workflow_bundle_gemfiles(member)
1690
1786
  Dir.glob(File.join(member.root, ".github", "workflows", "*.{yml,yaml}")).flat_map do |path|
1691
1787
  workflow_bundle_gemfile_entries(path).map do |entry|
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.63
4
+ version: 1.2.64
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -74,7 +74,7 @@ dependencies:
74
74
  version: '1.0'
75
75
  - - ">="
76
76
  - !ruby/object:Gem::Version
77
- version: 1.0.4
77
+ version: 1.0.5
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
@@ -84,7 +84,7 @@ dependencies:
84
84
  version: '1.0'
85
85
  - - ">="
86
86
  - !ruby/object:Gem::Version
87
- version: 1.0.4
87
+ version: 1.0.5
88
88
  - !ruby/object:Gem::Dependency
89
89
  name: kettle-dev
90
90
  requirement: !ruby/object:Gem::Requirement
@@ -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.63
445
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.63/CHANGELOG.md
444
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.64
445
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.64/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.63
447
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.64
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