kettle-dev 3.1.16 → 3.1.18

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: 16802c87427ef8443571014a94b2d7720f246f01ea22cf2821b2b9598f4b804b
4
- data.tar.gz: 9ced61074b0241db2b225d5bbbe6d3c1e359a16e587a949e47339a4b8a65f144
3
+ metadata.gz: 672f320446b4068e5c3baac7ee9a30443791328de854e1d917d7cefc0168ea39
4
+ data.tar.gz: 368787c9c87aa440b03dab7c3b4a0df2d9a91be96be1de6056a83c62d5e7b929
5
5
  SHA512:
6
- metadata.gz: 78fab6bbe0cca35be2a872350840b9bcbdc907bbd697ba245c5a47e406790bc72663161bd42518268386bf7df7c8e50900f31ddae2b4b2818670b259db7a7aee
7
- data.tar.gz: 6f2fc6046be6343e41ce2b917f274b0f6e726a145a09c6273bace66ecf525fee5567bb3ea4a25cce9fa344e9061e1f6d6cc7327efa8946804191eac783aee588
6
+ metadata.gz: 97b7bbc123483bf583d88ef67a30e8edbc923b6aab487e1cea2d890716f1a25e95657ab3f308209e61c0fbe42c4d9b06594172ebfb71442e3ce219434e528000
7
+ data.tar.gz: 02d2b63b536624d834fde01bedc077425bcb248ae4a169ac24e5ca6479130dba398dc1df8caa24e652fb692361c530849e84911cfe57923de0ede14511ee2a15
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,28 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [3.1.18] - 2026-10-19
34
+
35
+ - TAG: [v3.1.18][3.1.18t]
36
+ - COVERAGE: 91.72% -- 5763/6283 lines in 48 files
37
+ - BRANCH COVERAGE: 75.73% -- 2216/2926 branches in 48 files
38
+ - 53.60% documented
39
+
40
+ ### Added
41
+
42
+ - kettle-release aborts with an explicit outdated-tool error when a newer release of kettle-dev exists in the same minor series (registry lookup; failures never block; newer minors only warn; KETTLE_DEV_SKIP_TOOL_CURRENCY_CHECK skips), so a stale copy resolved from an old lockfile can no longer silently run without lockfile materialization and self-heal fixes.
43
+
44
+ ## [3.1.17] - 2026-10-18
45
+
46
+ - TAG: [v3.1.17][3.1.17t]
47
+ - COVERAGE: 91.84% -- 5761/6273 lines in 48 files
48
+ - BRANCH COVERAGE: 75.75% -- 2212/2920 branches in 48 files
49
+ - 53.60% documented
50
+
51
+ ### Fixed
52
+
53
+ - Family member publish materializes the release task lockfile before building: run_family_member_publish now runs the same normalize guard as the step 14/15 build entry points, so the BUNDLE_LOCKFILE snapshot copied from the committed Gemfile.lock is bundle-installed before rake build. Without it, a monorepo member build failed with: Could not find tool-old-version in locally installed gems, when the committed lockfile pinned an older release-tool resolution than the boot environment.
54
+
33
55
  ## [3.1.16] - 2026-10-18
34
56
 
35
57
  - TAG: [v3.1.16][3.1.16t]
@@ -4156,7 +4178,11 @@ Please file a bug if you notice a violation of semantic versioning.
4156
4178
  - Selecting will run the selected workflow via `act`
4157
4179
  - This may move to its own gem in the future.
4158
4180
 
4159
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.16...HEAD
4181
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.18...HEAD
4182
+ [3.1.18]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.17...v3.1.18
4183
+ [3.1.18t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.1.18
4184
+ [3.1.17]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.16...v3.1.17
4185
+ [3.1.17t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.1.17
4160
4186
  [3.1.16]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.15...v3.1.16
4161
4187
  [3.1.16t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.1.16
4162
4188
  [3.1.15]: https://github.com/kettle-dev/kettle-dev/compare/v3.1.14...v3.1.15
data/README.md CHANGED
@@ -1084,7 +1084,7 @@ Thanks for RTFM. ☺️
1084
1084
  [📌gitmoji]: https://gitmoji.dev
1085
1085
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1086
1086
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1087
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.272-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1087
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.283-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1088
1088
  [🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
1089
1089
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1090
1090
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -268,6 +268,7 @@ module Kettle
268
268
 
269
269
  def run
270
270
  @started_at = monotonic_time
271
+ ensure_release_tool_current!
271
272
  emit_run_start
272
273
  status = "ok"
273
274
  error = nil
@@ -672,6 +673,14 @@ module Kettle
672
673
 
673
674
  def run_family_member_publish
674
675
  version = detect_version
676
+ # The build pins BUNDLE_LOCKFILE to this run's task lockfile snapshot,
677
+ # copied from the committed Gemfile.lock on first use. Materialize it
678
+ # (bundle install against the snapshot) or the build fails on gems the
679
+ # snapshot pins but the boot env never installed — exactly what a
680
+ # stale committed lockfile plus an independently-versioned release
681
+ # tool produces (e.g. kettle-family 1.3.13 vs 1.3.18). Same guard the
682
+ # step 14/15 entry points run before `bundle exec rake build`.
683
+ normalize_release_lockfiles_before_publish_tasks!
675
684
  prepare_release_lockfiles_for_release_tasks!
676
685
  ensure_signing_setup_or_skip!
677
686
  ensure_release_secrets_ready_for_signing! if signing_enabled? && release_secrets_configured?
@@ -2314,6 +2323,34 @@ module Kettle
2314
2323
  m[2]
2315
2324
  end
2316
2325
 
2326
+ # Refuse to run a release with an outdated release tool. kettle-release
2327
+ # is resolved from the invoking bundle (for family releases, the family
2328
+ # root's Gemfile, which each family version-manages); a stale copy
2329
+ # silently misses lockfile materialization and self-heal behavior added
2330
+ # in later patch releases. When a newer release of this gem exists in
2331
+ # the same minor series, abort with the reason instead of misbehaving.
2332
+ # Newer releases in other minor series only warn: a family may
2333
+ # deliberately track an older minor. Registry lookup failure never
2334
+ # blocks a release. Skippable with KETTLE_DEV_SKIP_TOOL_CURRENCY_CHECK
2335
+ # for intentionally offline runs.
2336
+ def ensure_release_tool_current!
2337
+ return if truthy_value?(ENV["KETTLE_DEV_SKIP_TOOL_CURRENCY_CHECK"])
2338
+
2339
+ gem_name = "kettle-dev"
2340
+ current = Gem::Version.new(Kettle::Dev::VERSION)
2341
+ latest_overall, latest_series = latest_released_versions(gem_name, current.to_s)
2342
+
2343
+ if latest_series && Gem::Version.new(latest_series) > current
2344
+ raise Error,
2345
+ "kettle-release (#{gem_name} #{current}) is outdated: #{latest_series} is available in " \
2346
+ "the same minor series. Update the invoking Gemfile (bundle update #{gem_name}) and retry."
2347
+ end
2348
+
2349
+ if latest_overall && Gem::Version.new(latest_overall) > current
2350
+ warn("[kettle-release] #{gem_name} #{latest_overall} is available (running #{current} in the #{current.segments[0, 2].join(".")} series).")
2351
+ end
2352
+ end
2353
+
2317
2354
  def latest_released_versions(gem_name, current_version)
2318
2355
  data = Kettle::Dev::RubyGemsVersions.fetch(gem_name, version_hint: current_version)
2319
2356
  return [nil, nil] unless data.is_a?(Array)
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "3.1.16"
8
+ VERSION = "3.1.18"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
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: 3.1.16
4
+ version: 3.1.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -423,10 +423,10 @@ licenses:
423
423
  - AGPL-3.0-only
424
424
  metadata:
425
425
  homepage_uri: https://kettle-dev.galtzo.com
426
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.1.16
427
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.1.16/CHANGELOG.md
426
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.1.18
427
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.1.18/CHANGELOG.md
428
428
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
429
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.1.16
429
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.1.18
430
430
  funding_uri: https://github.com/sponsors/pboling
431
431
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
432
432
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
@@ -1,6 +1,2 @@
1
- fA�J &쨞��/�4�C(gZ��?o��u��%yT��g �Ç�Zyo�i1�������ȬҚ�IU���
2
- �T�mc4�>୴V;<����DR*j��d�)i�}
3
- �d�{�������L[��6�_�F��ļ$@
4
- �B�ᣡk���vqa�Z(�IU������l>���Z*�?ң�N���{']���!'���N�p�ٚ�t��@IϪ�I�0�P��lA� �'���̴e���� �D��e3������$|DvA��Qqj�� �R�����=K*&��s��-x��
5
- o
6
- hP��& �i�dw����$"�t��0��W����ՠ�B�^��ץ-I<�~l�B6�7{ �
1
+ w,J��5�7-����ϓ?\/�
2
+ �0���,x�i�]k�W~Rs1�D���t��G~���$��NP�+���x�^�f{H�evb��zݽ��Qhk������SYk��0��]�8'�1�$��[*�П��oF�G�k�|`��� ������+J����"r�� �05�v�m�S��Õ�q<����O�T��+����K�[�����'�"��M�\�lY`"U��|b6�F��<oJh�5ɠ��pvUQ�q���u��_�d� �6�L�#�ɻ��,���zuN�T¯�Ua��I�e��(�� N�V�r��&Ҍ6r������� �kBK셁d��}b5�^5�����&6w�vr �?隖Q����&��Hy,�T_�vy�������