kettle-family 1.3.34 → 1.3.35

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: 0f998250246be593256749a248a7ae97b9e22eada3f522aeee55a760c7c69286
4
- data.tar.gz: 5260947209c6e41c32d71daac0efc7aed14def50a68c6f26c9d7faf0934ce501
3
+ metadata.gz: df70ef40b82ccb54155fc57a43a1137d620d3cbd78cd74643d050b9056f3ecdb
4
+ data.tar.gz: aff84d0529ac6ef7b78a3248160eb72b4077f51609362c887837b1cd390a9a10
5
5
  SHA512:
6
- metadata.gz: 83195b27096a7dc07f64984d5c28db5e5bbfbe101662216478550c644f90eba7eacc0d6fb86251dc6b8a88a48d39d3519582a9f038448bfea899c2b3507116c6
7
- data.tar.gz: 512e1cb879df1ceb8e2dc1913e915beef55f696f0c6e97c453c3800e9bccb66293c178d9a30ce0a6384a20d6d48b8a83d6991311f23aa985109abb391fed2654
6
+ metadata.gz: e3ba12f341362839b45835afda346efa79c49aa886cf5d731980e0d9a2090ffe0297abb752bf72a293135e6ab4fa64c1f132210c882edfef2583c56204fb8355
7
+ data.tar.gz: 7cd500810f8b034e00be64dc03574d957c578be29ef1df6d17ca4bf73999c1c47a381d57799e445f1f4c0cabae3622c0ad44152b1152175c1a4b252e0800a034
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,27 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.3.35] - 2026-10-26
34
+
35
+ - TAG: [v1.3.35][1.3.35t]
36
+ - COVERAGE: 93.07% -- 7558/8121 lines in 45 files
37
+ - BRANCH COVERAGE: 77.45% -- 3016/3894 branches in 45 files
38
+ - 38.89% documented
39
+
40
+ ### Changed
41
+
42
+ - [kc] kettle-jem/prepare: updated 9 project files:
43
+ - dependencies (9)
44
+
45
+ - [kc] kettle-jem/template: updated 4 project files:
46
+ - dependencies (2)
47
+ - other (1)
48
+ - workflows (1)
49
+
50
+ ### Fixed
51
+
52
+ - [kc] duplicate-family-member-diagnostics: Duplicate gem names found in different directories now report both roots and gemspecs, with guidance for excluding scratch checkouts or disabling discovery when `members.roots` is complete.
53
+
33
54
  ## [1.3.34] - 2026-10-25
34
55
 
35
56
  - TAG: [v1.3.34][1.3.34t]
@@ -3278,7 +3299,9 @@ Please file a bug if you notice a violation of semantic versioning.
3278
3299
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
3279
3300
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
3280
3301
 
3281
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.3.34...HEAD
3302
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.3.35...HEAD
3303
+ [1.3.35]: https://github.com/kettle-dev/kettle-family/compare/v1.3.34...v1.3.35
3304
+ [1.3.35t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.3.35
3282
3305
  [1.3.34]: https://github.com/kettle-dev/kettle-family/compare/v1.3.33...v1.3.34
3283
3306
  [1.3.34t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.3.34
3284
3307
  [1.3.33]: https://github.com/kettle-dev/kettle-family/compare/v1.3.32...v1.3.33
data/README.md CHANGED
@@ -1191,7 +1191,7 @@ Thanks for RTFM. ☺️
1191
1191
  [📌gitmoji]: https://gitmoji.dev
1192
1192
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1193
1193
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1194
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-8.118-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1194
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-8.121-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1195
1195
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
1196
1196
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1197
1197
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -37,7 +37,9 @@ module Kettle
37
37
 
38
38
  (configured + discovered).each do |member|
39
39
  existing = by_name[member.name]
40
- raise Error, "duplicate family member #{member.name.inspect}" if existing && !same_directory?(existing.root, member.root)
40
+ if existing && !same_directory?(existing.root, member.root)
41
+ raise duplicate_member_error(existing, member)
42
+ end
41
43
 
42
44
  by_name[member.name] = member
43
45
  end
@@ -82,6 +84,18 @@ module Kettle
82
84
  release_dependency_member_names.include?(File.basename(File.expand_path(root)))
83
85
  end
84
86
 
87
+ def duplicate_member_error(first, second)
88
+ Error.new(<<~MESSAGE.strip)
89
+ duplicate family member #{first.name.inspect} found in different directories:
90
+ - #{first.root} (#{first.gemspec_path})
91
+ - #{second.root} (#{second.gemspec_path})
92
+ Each gem name must resolve to one family directory. If one is a scratch
93
+ checkout or worktree, move it outside the discovery roots or exclude it
94
+ with members.exclude. If members.roots lists the complete family, set
95
+ members.discover: false.
96
+ MESSAGE
97
+ end
98
+
85
99
  def primary_gemspec(root)
86
100
  gemspecs = Paths.glob(root, "*.gemspec")
87
101
  raise Error, "no gemspec found in #{root}" if gemspecs.empty?
@@ -803,7 +803,10 @@ module Kettle
803
803
  member_config = member_local_release_config(member)
804
804
  return unless member_config
805
805
 
806
- self.class.new(config: member_config, members: [member]).results(event_handler: event_handler)
806
+ current_result = check_member(member, event_handler: event_handler)
807
+ return [current_result] unless current_result.ok?
808
+
809
+ [current_result, *self.class.new(config: member_config, members: [member]).results(event_handler: event_handler)]
807
810
  end
808
811
 
809
812
  def emit_event(event_handler, member:, branch:, action:, status:, **details)
@@ -997,9 +1000,18 @@ module Kettle
997
1000
 
998
1001
  def add_branch_worktree(root:, branch:, worktree_root:)
999
1002
  WORKTREE_ADMIN_MUTEX.synchronize do
1000
- _stdout, stderr, status = Open3.capture3("git", "worktree", "add", "--detach", worktree_root, branch, chdir: root)
1001
- raise Error, "could not add worktree for #{branch}: #{stderr}" unless status.success?
1003
+ ref = resolvable_branch_ref(root, branch)
1004
+ _stdout, stderr, status = Open3.capture3("git", "worktree", "add", "--detach", worktree_root, ref, chdir: root)
1005
+ raise Error, "could not add worktree for #{branch}: #{stderr.strip}; fetch the branch or create a local ref (git fetch origin #{branch})" unless status.success?
1006
+ end
1007
+ end
1008
+
1009
+ def resolvable_branch_ref(root, branch)
1010
+ [branch, "refs/remotes/origin/#{branch}"].each do |ref|
1011
+ _stdout, _stderr, status = Open3.capture3("git", "rev-parse", "--verify", "#{ref}^{commit}", chdir: root)
1012
+ return ref if status.success?
1002
1013
  end
1014
+ branch
1003
1015
  end
1004
1016
 
1005
1017
  def remove_branch_worktree(root:, worktree_root:)
@@ -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.34"
8
+ VERSION = "1.3.35"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -2223,11 +2223,14 @@ module Kettle
2223
2223
  # repositories through one-at-a-time release workflows. Run those
2224
2224
  # members through the normal release scheduler first so configured
2225
2225
  # waves and their worker budget remain effective.
2226
- results.concat(current_branch_results(current_branch_members)) unless current_branch_members.empty?
2226
+ current_members = start_branch ? current_branch_members : members
2227
+ results.concat(current_branch_results(current_members)) unless current_members.empty?
2227
2228
  return results unless results.all?(&:ok?)
2228
2229
 
2229
2230
  target_members.each_with_object(results) do |member, memo|
2230
2231
  member_config = member_local_release_config(member)
2232
+ next if start_branch.nil? && BranchTargetConfig.branch_targets_for(command, member_config.release_target_branches).empty?
2233
+
2231
2234
  memo.concat(member_local_workflow(member: member, member_config: member_config).results)
2232
2235
  break memo unless memo.last&.ok?
2233
2236
  end
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.34
4
+ version: 1.3.35
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -174,7 +174,7 @@ dependencies:
174
174
  version: '0.3'
175
175
  - - ">="
176
176
  - !ruby/object:Gem::Version
177
- version: 0.3.18
177
+ version: 0.3.19
178
178
  type: :runtime
179
179
  prerelease: false
180
180
  version_requirements: !ruby/object:Gem::Requirement
@@ -184,7 +184,7 @@ dependencies:
184
184
  version: '0.3'
185
185
  - - ">="
186
186
  - !ruby/object:Gem::Version
187
- version: 0.3.18
187
+ version: 0.3.19
188
188
  - !ruby/object:Gem::Dependency
189
189
  name: kettle-jem
190
190
  requirement: !ruby/object:Gem::Requirement
@@ -214,7 +214,7 @@ dependencies:
214
214
  version: '0.1'
215
215
  - - ">="
216
216
  - !ruby/object:Gem::Version
217
- version: 0.1.20
217
+ version: 0.1.22
218
218
  type: :runtime
219
219
  prerelease: false
220
220
  version_requirements: !ruby/object:Gem::Requirement
@@ -224,7 +224,7 @@ dependencies:
224
224
  version: '0.1'
225
225
  - - ">="
226
226
  - !ruby/object:Gem::Version
227
- version: 0.1.20
227
+ version: 0.1.22
228
228
  - !ruby/object:Gem::Dependency
229
229
  name: kettle-test
230
230
  requirement: !ruby/object:Gem::Requirement
@@ -234,7 +234,7 @@ dependencies:
234
234
  version: '2.0'
235
235
  - - ">="
236
236
  - !ruby/object:Gem::Version
237
- version: 2.0.27
237
+ version: 2.0.28
238
238
  type: :runtime
239
239
  prerelease: false
240
240
  version_requirements: !ruby/object:Gem::Requirement
@@ -244,7 +244,7 @@ dependencies:
244
244
  version: '2.0'
245
245
  - - ">="
246
246
  - !ruby/object:Gem::Version
247
- version: 2.0.27
247
+ version: 2.0.28
248
248
  - !ruby/object:Gem::Dependency
249
249
  name: psych-merge
250
250
  requirement: !ruby/object:Gem::Requirement
@@ -336,7 +336,7 @@ dependencies:
336
336
  version: '1.1'
337
337
  - - ">="
338
338
  - !ruby/object:Gem::Version
339
- version: 1.1.16
339
+ version: 1.1.17
340
340
  type: :runtime
341
341
  prerelease: false
342
342
  version_requirements: !ruby/object:Gem::Requirement
@@ -346,7 +346,7 @@ dependencies:
346
346
  version: '1.1'
347
347
  - - ">="
348
348
  - !ruby/object:Gem::Version
349
- version: 1.1.16
349
+ version: 1.1.17
350
350
  - !ruby/object:Gem::Dependency
351
351
  name: bundler-audit
352
352
  requirement: !ruby/object:Gem::Requirement
@@ -404,7 +404,7 @@ dependencies:
404
404
  version: '0.1'
405
405
  - - ">="
406
406
  - !ruby/object:Gem::Version
407
- version: 0.1.4
407
+ version: 0.1.5
408
408
  type: :development
409
409
  prerelease: false
410
410
  version_requirements: !ruby/object:Gem::Requirement
@@ -414,7 +414,7 @@ dependencies:
414
414
  version: '0.1'
415
415
  - - ">="
416
416
  - !ruby/object:Gem::Version
417
- version: 0.1.4
417
+ version: 0.1.5
418
418
  - !ruby/object:Gem::Dependency
419
419
  name: appraisal2
420
420
  requirement: !ruby/object:Gem::Requirement
@@ -608,10 +608,10 @@ licenses:
608
608
  - AGPL-3.0-only
609
609
  metadata:
610
610
  homepage_uri: https://kettle-family.galtzo.com
611
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.3.34
612
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.3.34/CHANGELOG.md
611
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.3.35
612
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.3.35/CHANGELOG.md
613
613
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
614
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.3.34
614
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.3.35
615
615
  funding_uri: https://github.com/sponsors/pboling
616
616
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
617
617
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file