kettle-dev 2.2.7 → 2.2.9

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: 3468f777c78fb3017468fbb76728ee056aa1924738b8935d1fd748d41c91f3ff
4
- data.tar.gz: 10386b28122fb17e85f555c70784a398d0f8692f3b02d77ebafab8540ae74cc6
3
+ metadata.gz: 3bee699f7f3622c9ae1e63f19cec10ec46a54fe67bd97869169b309bbbcb4bb2
4
+ data.tar.gz: '099d1ddeab902593baa43b8a1fe6de1b899f1ab3bdff9bd6ddba3363d5627b02'
5
5
  SHA512:
6
- metadata.gz: 3de744ea449a1f6f738b6b19704bbf48a996a67c835201310bfd60b9127fa3b3a2634fd52c9f3d8f2ce45a571e6caf316f91d902f2f8fab8a8d3511bc21c13bc
7
- data.tar.gz: 1efa9c2da744cdd3fa16d0676b06b78836df3d4194ee6908a756ad479d63c5c50e015a8dde67f416d0cd2e2da3e3c9bff4971c980840603db4613c9bf9f37cc3
6
+ metadata.gz: 7af3f2c8a7a278416c97a9a006d4a45946c371fcf75d11f9e6dc29b2a29fbc629fa53fb647cc3fbab0b7a18436dd4ecfa1139fcb993f51c89c798c7f3e95a6c0
7
+ data.tar.gz: 78c1377327823ab8ae01bb76f4e318fc501fc0ba8e3c60ffc95dc661a68853a338bc501c9ea631992ea6cc7bf5b31b74865ed3a503770c6c9223e253ece33403
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,40 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [2.2.9] - 2026-06-14
34
+
35
+ - TAG: [v2.2.9][2.2.9t]
36
+ - COVERAGE: 92.57% -- 3863/4173 lines in 28 files
37
+ - BRANCH COVERAGE: 74.00% -- 1534/2073 branches in 28 files
38
+ - 65.38% documented
39
+
40
+ ### Fixed
41
+
42
+ - `kettle-gha-sha-pins --check` no longer fails solely because releases outside
43
+ the selected `--upgrade` policy exist, and `kettle-pre-release` now validates
44
+ workflow pins with the inclusive `major` policy used for release readiness.
45
+
46
+ - `kettle-gha-sha-pins --write` now handles major-line adjacent version comments
47
+ such as `# v7` idempotently instead of repeatedly planning the same
48
+ `update_version_comment` change.
49
+
50
+ ## [2.2.8] - 2026-06-13
51
+
52
+ - TAG: [v2.2.8][2.2.8t]
53
+ - COVERAGE: 92.40% -- 3854/4171 lines in 28 files
54
+ - BRANCH COVERAGE: 73.37% -- 1521/2073 branches in 28 files
55
+ - 66.02% documented
56
+
57
+ ### Fixed
58
+
59
+ #### Changelog
60
+
61
+ - `kettle-changelog --release-state` now reports a clear family-root hint when
62
+ run outside a single gem instead of raising a missing `CHANGELOG.md` stack
63
+ trace.
64
+ - `kettle-changelog --release-state` now reports a successful no-changelog state
65
+ for individual gems that do not have a `CHANGELOG.md`.
66
+
33
67
  ## [2.2.7] - 2026-06-13
34
68
 
35
69
  - TAG: [v2.2.7][2.2.7t]
@@ -2092,7 +2126,11 @@ Please file a bug if you notice a violation of semantic versioning.
2092
2126
  - Selecting will run the selected workflow via `act`
2093
2127
  - This may move to its own gem in the future.
2094
2128
 
2095
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.7...HEAD
2129
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.9...HEAD
2130
+ [2.2.9]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.8...v2.2.9
2131
+ [2.2.9t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.2.9
2132
+ [2.2.8]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.7...v2.2.8
2133
+ [2.2.8t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.2.8
2096
2134
  [2.2.7]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.6...v2.2.7
2097
2135
  [2.2.7t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.2.7
2098
2136
  [2.2.6]: https://github.com/kettle-dev/kettle-dev/compare/v2.2.5...v2.2.6
data/README.md CHANGED
@@ -854,7 +854,7 @@ Thanks for RTFM. ☺️
854
854
  [📌gitmoji]: https://gitmoji.dev
855
855
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
856
856
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
857
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-4.161-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
857
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-4.173-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
858
858
  [🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
859
859
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
860
860
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -140,12 +140,32 @@ module Kettle
140
140
  end
141
141
 
142
142
  def release_state
143
+ changelog_present = ensure_changelog_for_release_state!
144
+ version = detect_version
145
+ gem_name = detect_gem_name
146
+ unless changelog_present
147
+ latest_overall, latest_for_series = latest_released_versions(gem_name, version)
148
+ latest_target = latest_release_target(version, latest_overall, latest_for_series)
149
+ return {
150
+ root: @root,
151
+ gem_name: gem_name,
152
+ version: version,
153
+ changelog_present: false,
154
+ pending: false,
155
+ pending_release: false,
156
+ unreleased_entries: false,
157
+ prepared_release_pending: false,
158
+ latest_changelog_version: nil,
159
+ latest_released: latest_overall,
160
+ latest_released_for_current_series: latest_for_series,
161
+ latest_release_target: latest_target
162
+ }
163
+ end
164
+
143
165
  changelog = File.read(@changelog_path)
144
166
  unreleased_block, _before, after = extract_unreleased(changelog)
145
167
  unreleased_entries = unreleased_block_has_entries?(unreleased_block)
146
168
  latest_changelog_version = detect_previous_version(after.to_s)
147
- version = detect_version
148
- gem_name = detect_gem_name
149
169
  release_lookup_version = latest_changelog_version || version
150
170
  latest_overall, latest_for_series = latest_released_versions(gem_name, release_lookup_version)
151
171
  latest_target = latest_release_target(release_lookup_version, latest_overall, latest_for_series)
@@ -155,6 +175,7 @@ module Kettle
155
175
  root: @root,
156
176
  gem_name: gem_name,
157
177
  version: version,
178
+ changelog_present: true,
158
179
  pending: unreleased_entries || prepared_release_pending,
159
180
  pending_release: unreleased_entries || prepared_release_pending,
160
181
  unreleased_entries: unreleased_entries,
@@ -196,6 +217,16 @@ module Kettle
196
217
  Kettle::Dev::ExitAdapter.abort(msg)
197
218
  end
198
219
 
220
+ def ensure_changelog_for_release_state!
221
+ return true if File.file?(@changelog_path)
222
+
223
+ if File.file?(File.join(@root, "Gemfile")) && Dir.glob(File.join(@root, "*", "*.gemspec")).any?
224
+ abort("Could not find CHANGELOG.md in #{Kettle::Dev.display_path(@root)}. This looks like a gem-family root; run `kettle-family release-state` from this directory, or run `kettle-changelog --release-state` from an individual gem directory.")
225
+ end
226
+
227
+ false
228
+ end
229
+
199
230
  def yes_no(value)
200
231
  value ? "yes" : "no"
201
232
  end
@@ -33,6 +33,8 @@ module Kettle
33
33
  DEFAULT_UPGRADE_LEVEL = "patch"
34
34
  DEFAULT_CACHE_TTL_SECONDS = 24 * 60 * 60
35
35
  VALID_UPGRADE_LEVELS = %w[major minor patch].freeze
36
+ VERSION_COMMENT_SUFFIX_RE = /\A\s+#\s*v?(?<version>\d+(?:\.\d+\.\d+(?:[-.]?[0-9A-Za-z.-]+)?)?)/
37
+ VERSION_COMMENT_REPLACEMENT_RE = /\A(?<prefix>\s+#\s*)v?\d+(?:\.\d+\.\d+(?:[-.]?[0-9A-Za-z.-]+)?)?/
36
38
 
37
39
  def initialize(argv, err: $stderr)
38
40
  @argv = argv
@@ -215,7 +217,7 @@ module Kettle
215
217
 
216
218
  print_report(state)
217
219
  return 2 unless state[:failures].zero?
218
- return 3 if @options[:check] && (state[:updates].positive? || state[:outdated_pins].any?)
220
+ return 3 if @options[:check] && state[:updates].positive?
219
221
 
220
222
  0
221
223
  end
@@ -745,8 +747,8 @@ module Kettle
745
747
  return nil unless token_info[:token] == old_token
746
748
 
747
749
  suffix = raw[token_info[:span]..-1].to_s
748
- match = suffix.match(/\A\s+#\s*v?(\d+\.\d+\.\d+(?:[-.]?[0-9A-Za-z.-]+)?)/)
749
- match && match[1]
750
+ match = suffix.match(VERSION_COMMENT_SUFFIX_RE)
751
+ match && match[:version]
750
752
  end
751
753
 
752
754
  def build_replacement_from_line(text, line, col, old_token, new_ref, new_version = nil)
@@ -767,7 +769,7 @@ module Kettle
767
769
  new_scalar = rendered[:quoted]
768
770
  if new_version && token_info[:quote] == :plain
769
771
  suffix = raw[span..-1].to_s
770
- comment = suffix.match(/\A(?<prefix>\s+#\s*)v?\d+\.\d+\.\d+(?:[-.]?[0-9A-Za-z.-]+)?/)
772
+ comment = suffix.match(VERSION_COMMENT_REPLACEMENT_RE)
771
773
  if comment
772
774
  span += comment[0].length
773
775
  new_scalar += "#{comment[:prefix]}v#{new_version}"
@@ -902,7 +904,7 @@ module Kettle
902
904
  lines << "- #{change[:path]}:#{change[:line]} #{from} -> #{to} #{change[:reason]}"
903
905
  end
904
906
  end
905
- if @options[:check] && (state[:planned_changes].any? || state[:outdated_pins].any?)
907
+ if @options[:check] && state[:planned_changes].any?
906
908
  lines << ""
907
909
  lines << "Recommended fix: kettle-gha-sha-pins --write --upgrade #{@options[:upgrade]}"
908
910
  end
@@ -210,7 +210,7 @@ module Kettle
210
210
  # @return [void]
211
211
  def check_github_actions_sha_pins!
212
212
  puts "[kettle-pre-release] Check 1: Validate GitHub Actions SHA pins"
213
- status = Kettle::Dev::GhaShaPinsCLI.new(["--root", Dir.pwd, "--check"]).run!
213
+ status = Kettle::Dev::GhaShaPinsCLI.new(["--root", Dir.pwd, "--check", "--upgrade", "major"]).run!
214
214
  return nil if status.zero?
215
215
 
216
216
  Kettle::Dev::ExitAdapter.abort("GitHub Actions SHA pin validation failed")
@@ -3,7 +3,7 @@
3
3
  module Kettle
4
4
  module Dev
5
5
  module Version
6
- VERSION = "2.2.7"
6
+ VERSION = "2.2.9"
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.7
4
+ version: 2.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -338,10 +338,10 @@ licenses:
338
338
  - AGPL-3.0-only
339
339
  metadata:
340
340
  homepage_uri: https://kettle-dev.galtzo.com
341
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.2.7
342
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.2.7/CHANGELOG.md
341
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.2.9
342
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.2.9/CHANGELOG.md
343
343
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
344
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.2.7
344
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.2.9
345
345
  funding_uri: https://github.com/sponsors/pboling
346
346
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
347
347
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file