kettle-dev 3.0.30 → 3.0.32

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: d32d5afad3273769c6866465e43835b68691702c67e7de114aa0c641e5ba98e4
4
- data.tar.gz: 182991a2de8eb82855285724435c3430a2dd52759838efbf11543061eb4336b4
3
+ metadata.gz: 9132d12950e549b34487cfee3dfdbe7fc3e3fc8d09c61e5c469200ebcfd33494
4
+ data.tar.gz: bc7028945556631f6580263cb484e2fe355eb183230b26858622efd5e72c2684
5
5
  SHA512:
6
- metadata.gz: 29ad4b57bc12dc971e7132a46c52a6c33492838673d53f35c4dafb7a30c915383002365ab65fc7cf0350e35a5d8bb35ce0764c2cc33913f859c9fad49e9b467a
7
- data.tar.gz: 82ab1755611b6d7f645ab573554f18030766a76a07f93e8e2a9af866ec2eadb2b36426d104142de457ca6af26b4eb05df4516978a77b19de2209057de315f508
6
+ metadata.gz: 54f36d581d481382e2916eede84a4445eb89505f87021e422efec8ff7fe1a185059d06e451f1332717a8cd6ccdfb4dd8e4ba22de77ce6b20af4895cbd2d93ca4
7
+ data.tar.gz: c25ead2234bda685bb6c3e6d4f3a3af33a673788705744a3efd69a866e7d9027034ce1cb6e6775fd63f240455593a2c2b505548331a73fd4ed5148b7de2ad736
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,30 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [3.0.32] - 2026-09-07
34
+
35
+ - TAG: [v3.0.32][3.0.32t]
36
+ - COVERAGE: 91.83% -- 6067/6607 lines in 47 files
37
+ - BRANCH COVERAGE: 76.38% -- 2318/3035 branches in 47 files
38
+ - 50.35% documented
39
+
40
+ ### Fixed
41
+
42
+ - Preserve active local dependency selectors while generating Appraisal files during family templating.
43
+
44
+ ## [3.0.31] - 2026-09-06
45
+
46
+ - TAG: [v3.0.31][3.0.31t]
47
+ - COVERAGE: 91.85% -- 6060/6598 lines in 47 files
48
+ - BRANCH COVERAGE: 76.33% -- 2315/3033 branches in 47 files
49
+ - 50.00% documented
50
+
51
+ ### Fixed
52
+
53
+ - Preserve every configured Bundler lockfile platform when resetting release lockfiles.
54
+
55
+ - Materialize normalized release bundles before running bundle-exec release checks.
56
+
33
57
  ## [3.0.30] - 2026-09-01
34
58
 
35
59
  - TAG: [v3.0.30][3.0.30t]
@@ -3799,7 +3823,11 @@ Please file a bug if you notice a violation of semantic versioning.
3799
3823
  - Selecting will run the selected workflow via `act`
3800
3824
  - This may move to its own gem in the future.
3801
3825
 
3802
- [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.30...HEAD
3826
+ [Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.32...HEAD
3827
+ [3.0.32]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.31...v3.0.32
3828
+ [3.0.32t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.32
3829
+ [3.0.31]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.30...v3.0.31
3830
+ [3.0.31t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.31
3803
3831
  [3.0.30]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.29...v3.0.30
3804
3832
  [3.0.30t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.30
3805
3833
  [3.0.29]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.28...v3.0.29
data/README.md CHANGED
@@ -1066,7 +1066,7 @@ Thanks for RTFM. ☺️
1066
1066
  [📌gitmoji]: https://gitmoji.dev
1067
1067
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1068
1068
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1069
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.586-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1069
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.607-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1070
1070
  [🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
1071
1071
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1072
1072
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -202,12 +202,10 @@ module Kettle
202
202
  command << " #{key}=#{Shellwords.escape(value)}"
203
203
  end
204
204
  command << " bundle lock"
205
- removed_platforms.sort.each do |platform|
206
- command << " --remove-platform=#{Shellwords.escape(platform)}"
207
- end
208
- platforms.each do |platform|
209
- command << " --add-platform=#{Shellwords.escape(platform)}"
210
- end
205
+ # Bundler accepts each platform option once followed by a list. Repeating
206
+ # either option silently keeps only the final occurrence with Bundler 4.
207
+ command << " --remove-platform #{removed_platforms.sort.map { |platform| Shellwords.escape(platform) }.join(" ")}" unless removed_platforms.empty?
208
+ command << " --add-platform #{platforms.map { |platform| Shellwords.escape(platform) }.join(" ")}" unless platforms.empty?
211
209
  command << " --update"
212
210
  command << " #{update_gems.map { |gem_name| Shellwords.escape(gem_name) }.join(" ")}" unless update_gems.empty?
213
211
  # Bundler preserves BUNDLED WITH during a normal lockfile update.
@@ -323,6 +321,19 @@ module Kettle
323
321
  .merge(dynamic_local_path_env)
324
322
  end
325
323
 
324
+ # Appraisal generation normally uses the release-normalized environment.
325
+ # During family templating it instead needs the caller's deliberately
326
+ # selected local graph so generated Appraisal Gemfiles can resolve
327
+ # unpublished sibling dependencies.
328
+ def appraisal_normalization_env
329
+ env = normalization_env
330
+ return env unless template_local_environment?
331
+
332
+ env.reject do |name, _value|
333
+ name == "K_JEM_TEMPLATING" || active_local_path_env?(name)
334
+ end
335
+ end
336
+
326
337
  def dynamic_local_path_env
327
338
  ENV.each_with_object({}) do |(key, value), env|
328
339
  next unless key.end_with?("_DEV", "_LOCAL")
@@ -341,6 +352,14 @@ module Kettle
341
352
  text.include?(File::SEPARATOR)
342
353
  end
343
354
 
355
+ def template_local_environment?
356
+ %w[1 true yes on].include?(ENV.fetch("K_JEM_TEMPLATING", "").to_s.strip.downcase)
357
+ end
358
+
359
+ def active_local_path_env?(name)
360
+ local_path_env_value?(ENV[name])
361
+ end
362
+
344
363
  def has_local_path_remote?(path)
345
364
  !disallowed_local_path_remote_lines(path).empty?
346
365
  end
@@ -30,7 +30,7 @@ begin
30
30
  "BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES" => "true"
31
31
  }
32
32
  appraisal_env = quiet_env.merge(
33
- Kettle::Dev::LockfileReset.new(root: Dir.pwd, command_runner: ->(_command) {}).normalization_env
33
+ Kettle::Dev::LockfileReset.new(root: Dir.pwd, command_runner: ->(_command) {}).appraisal_normalization_env
34
34
  ).merge(
35
35
  unbundled_env
36
36
  ).merge(
@@ -266,7 +266,10 @@ module Kettle
266
266
  # to collect coverage. Normalize its canonical release lockfile before
267
267
  # that subprocess starts; otherwise a local development PATH lock can
268
268
  # force Bundler to resolve an invalid mixed local/released graph.
269
- prepare_release_lockfiles_for_release_tasks! if release_lockfile_preflight_needed?
269
+ if release_lockfile_preflight_needed?
270
+ prepare_release_lockfiles_for_release_tasks!
271
+ materialize_release_lockfiles_for_release_tasks!
272
+ end
270
273
  run_pre_release_checks! if run_step?(0)
271
274
 
272
275
  # 1. Ensure Bundler version and record its current release in the
@@ -752,6 +755,36 @@ module Kettle
752
755
  reset_release_lockfiles!(stage: "before release task bundle installs")
753
756
  end
754
757
 
758
+ # Resetting can select a platform-specific artifact that is not installed
759
+ # in the invoking development bundle. Materialize every canonical release
760
+ # bundle before a release gate runs `bundle exec`. Use a disposable copy:
761
+ # Bundler may reconcile the active host platform during installation, and
762
+ # that must never alter the canonical release-preparation lockfile.
763
+ def materialize_release_lockfiles_for_release_tasks!
764
+ release_lockfile_paths.each do |lockfile|
765
+ gemfile = release_gemfile_for_lockfile(lockfile)
766
+ next unless gemfile && File.file?(gemfile)
767
+
768
+ begin
769
+ stage = "before release task bundle installs"
770
+ task_lockfile = release_task_lockfile_path(gemfile: gemfile)
771
+ emit_release_lockfile_event(action: "install", status: "started", stage: stage, reason: File.basename(gemfile))
772
+ puts "Installing normalized release bundle for #{File.basename(gemfile)}..."
773
+ run_cmd!(release_child_command(
774
+ "bundle install",
775
+ environment: {
776
+ "BUNDLE_GEMFILE" => gemfile,
777
+ "BUNDLE_LOCKFILE" => task_lockfile || lockfile
778
+ }
779
+ ))
780
+ emit_release_lockfile_event(action: "install", status: "ok", stage: stage, reason: File.basename(gemfile))
781
+ rescue => error
782
+ emit_release_lockfile_event(action: "install", status: "failed", stage: stage, reason: error.message)
783
+ raise
784
+ end
785
+ end
786
+ end
787
+
755
788
  def reset_release_lockfiles!(stage:)
756
789
  return if @release_lockfiles_reset_for_release_tasks && stage == "before release task bundle installs"
757
790
 
@@ -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.0.30"
8
+ VERSION = "3.0.32"
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.0.30
4
+ version: 3.0.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -400,10 +400,10 @@ licenses:
400
400
  - AGPL-3.0-only
401
401
  metadata:
402
402
  homepage_uri: https://kettle-dev.galtzo.com
403
- source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.30
404
- changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.30/CHANGELOG.md
403
+ source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.32
404
+ changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.32/CHANGELOG.md
405
405
  bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
406
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.30
406
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.32
407
407
  funding_uri: https://github.com/sponsors/pboling
408
408
  wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
409
409
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file