kettle-dev 2.2.20 → 2.2.21

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: 22a0bb59de4bca05c100302f2050a300c2a60a90a2124f2f5aa07c215c6b6919
4
- data.tar.gz: 6b314236d27b59baa482317413c5b5c95303b9530b33693ee03841491ed00bc6
3
+ metadata.gz: 5c84739dfdebb3ae9c5c6fd438c7cc1db6e5707d9cecfe7a3e2e754e41390301
4
+ data.tar.gz: 9e1f2b9e2f3c842c218977027c6cf69c1a753072f2d281e39239dc3e7097e9ee
5
5
  SHA512:
6
- metadata.gz: 1f8a2d831b26d101a1ea8e381ff3cfc7bbce6d88682e70ec43c22a37b3ba047da5376247b5f32b1184f088514da8a1377f54ffcbe4def383b249515c70c3c518
7
- data.tar.gz: 1aa2b1ceb5886238f9034491256e3c7fbdd5cbba121c27393288bced653f92051e43fec7f242a35b4cab7e316731e422a46c73c054548c96ee4b1537c6b371ac
6
+ metadata.gz: 287be3949983f25366e89ec2de3058bc63cf14dee7ff5b45a5da6a49a09d524493e91318788a370bb6ff92d4bed313771596368638f5026802850523be74f4df
7
+ data.tar.gz: 20bf852b21d4fa605b151e9ee4fe91b50921fa7320ded4ec937951e3cfcc4177ae653246448139ede0188d4741d70f0b5d1b7afce04ed042442d31cbbbb4f98b
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
+ ## [2.2.21] - 2026-06-28
34
+
35
+ - TAG: [v2.2.21][2.2.21t]
36
+ - COVERAGE: 92.34% -- 4182/4529 lines in 33 files
37
+ - BRANCH COVERAGE: 73.34% -- 1659/2262 branches in 33 files
38
+ - 61.04% documented
39
+
40
+ ### Fixed
41
+
42
+ - `kettle-release` now detects local `.kettle-family.yml` branch-stack release
43
+ targets and skips trunk sync, trunk merge, and trunk checkout for those release
44
+ branches.
45
+
33
46
  ## [2.2.20] - 2026-06-27
34
47
 
35
48
  - TAG: [v2.2.20][2.2.20t]
@@ -2321,7 +2334,9 @@ Please file a bug if you notice a violation of semantic versioning.
2321
2334
  - Selecting will run the selected workflow via `act`
2322
2335
  - This may move to its own gem in the future.
2323
2336
 
2324
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.20...HEAD
2337
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.21...HEAD
2338
+ [2.2.21]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.20...v2.2.21
2339
+ [2.2.21t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.2.21
2325
2340
  [2.2.20]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.19...v2.2.20
2326
2341
  [2.2.20t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.2.20
2327
2342
  [2.2.19]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.18...v2.2.19
data/README.md CHANGED
@@ -874,7 +874,7 @@ Thanks for RTFM. ☺️
874
874
  [📌gitmoji]: https://gitmoji.dev
875
875
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
876
876
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
877
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-4.499-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
877
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-4.529-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
878
878
  [🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
879
879
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
880
880
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -196,7 +196,7 @@ module Kettle
196
196
  end
197
197
 
198
198
  def declared_version_file_path(root)
199
- gemspec_path = Dir.glob(File.join(root.to_s, "*.gemspec")).sort.first
199
+ gemspec_path = Dir.glob(File.join(root.to_s, "*.gemspec")).min
200
200
  return unless gemspec_path && File.file?(gemspec_path)
201
201
 
202
202
  gemspec_source = File.read(gemspec_path)
@@ -9,6 +9,7 @@ require "fileutils"
9
9
  require "net/http"
10
10
  require "json"
11
11
  require "uri"
12
+ require "yaml"
12
13
 
13
14
  # External gems
14
15
  require "kettle/rb/compat_matrix"
@@ -128,6 +129,7 @@ module Kettle
128
129
  committed = nil
129
130
  trunk = nil
130
131
  feature = nil
132
+ branch_stack_release = false
131
133
 
132
134
  # 2. Version detection and sanity checks + prompt
133
135
  if run_step?(2)
@@ -257,8 +259,12 @@ module Kettle
257
259
  if run_step?(8) && !local_ci?
258
260
  trunk = detect_trunk_branch
259
261
  feature = current_branch
262
+ branch_stack_release = branch_stack_release_branch?(feature, trunk)
263
+ if branch_stack_release
264
+ puts "Kettle-family branch stack release branch detected: #{feature}; skipping trunk sync/rebase."
265
+ end
260
266
  puts "Trunk branch detected: #{trunk}"
261
- ensure_trunk_synced_before_push!(trunk, feature)
267
+ ensure_trunk_synced_before_push!(trunk, feature) unless branch_stack_release
262
268
  elsif run_step?(8)
263
269
  puts "Local CI release mode: skipping remote trunk sync before publishing."
264
270
  end
@@ -273,14 +279,25 @@ module Kettle
273
279
  if run_step?(11) && !local_ci?
274
280
  trunk ||= detect_trunk_branch
275
281
  feature ||= current_branch
276
- merge_feature_into_trunk_and_push!(trunk, feature)
282
+ branch_stack_release ||= branch_stack_release_branch?(feature, trunk)
283
+ if branch_stack_release
284
+ puts "Kettle-family branch stack release branch detected: #{feature}; skipping merge into #{trunk}."
285
+ else
286
+ merge_feature_into_trunk_and_push!(trunk, feature)
287
+ end
277
288
  end
278
289
 
279
290
  # 12. checkout trunk and pull
280
291
  if run_step?(12) && !local_ci?
281
292
  trunk ||= detect_trunk_branch
282
- checkout!(trunk)
283
- pull!(trunk)
293
+ feature ||= current_branch
294
+ branch_stack_release ||= branch_stack_release_branch?(feature, trunk)
295
+ if branch_stack_release
296
+ puts "Kettle-family branch stack release branch detected: #{feature}; staying on release branch."
297
+ else
298
+ checkout!(trunk)
299
+ pull!(trunk)
300
+ end
284
301
  end
285
302
 
286
303
  # 13. signing guidance and checks
@@ -1086,6 +1103,44 @@ module Kettle
1086
1103
  puts "Merged #{feature} into #{trunk} and pushed. The PR (if any) should auto-close."
1087
1104
  end
1088
1105
 
1106
+ def branch_stack_release_branch?(branch, trunk = nil)
1107
+ return false if branch.to_s.empty?
1108
+ return false if trunk && branch == trunk
1109
+
1110
+ local_kettle_family_release_target_branches.include?(branch)
1111
+ end
1112
+
1113
+ def local_kettle_family_release_target_branches
1114
+ local_kettle_family_config_paths.each do |path|
1115
+ next unless File.file?(path)
1116
+
1117
+ begin
1118
+ data = YAML.safe_load(File.read(path), permitted_classes: [], aliases: false) || {}
1119
+ branches = Array(dig_string_keys(data, "release", "target_branches")) +
1120
+ Array(dig_string_keys(data, "branches", "release_targets"))
1121
+ return branches.map(&:to_s).reject(&:empty?) unless branches.empty?
1122
+ rescue Psych::Exception => e
1123
+ warn("Ignoring invalid kettle-family config #{Kettle::Dev.display_path(path)}: #{e.message}")
1124
+ end
1125
+ end
1126
+ []
1127
+ end
1128
+
1129
+ def local_kettle_family_config_paths
1130
+ [
1131
+ File.join(@root, ".kettle-family.yml"),
1132
+ File.join(@root, ".structuredmerge", "kettle-family.yml")
1133
+ ]
1134
+ end
1135
+
1136
+ def dig_string_keys(data, *keys)
1137
+ keys.reduce(data) do |memo, key|
1138
+ break nil unless memo.is_a?(Hash)
1139
+
1140
+ memo[key] || memo[key.to_sym]
1141
+ end
1142
+ end
1143
+
1089
1144
  def ensure_signing_setup_or_skip!
1090
1145
  # Treat any non-/true/i value as an explicit skip signal
1091
1146
  return if ENV.fetch("SKIP_GEM_SIGNING", "").casecmp("true").zero?
@@ -3,7 +3,7 @@
3
3
  module Kettle
4
4
  module Dev
5
5
  module Version
6
- VERSION = "2.2.20"
6
+ VERSION = "2.2.21"
7
7
  end
8
8
  VERSION = Version::VERSION # Traditional Constant Location
9
9
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.20
4
+ version: 2.2.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -359,10 +359,10 @@ licenses:
359
359
  - AGPL-3.0-only
360
360
  metadata:
361
361
  homepage_uri: https://kettle-dev.galtzo.com
362
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.2.20
363
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.2.20/CHANGELOG.md
362
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.2.21
363
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.2.21/CHANGELOG.md
364
364
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
365
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.2.20
365
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.2.21
366
366
  funding_uri: https://github.com/sponsors/pboling
367
367
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
368
368
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file