kettle-jem 7.1.35 → 7.1.37

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: f1760c5c4522f12469f4dd8b03571cc2fa22f93d364e2da8a54c3cc93d57e292
4
- data.tar.gz: bf01a7571deabfabc42d7314f48b6198811221cdcda975b798ca8a9406ccc211
3
+ metadata.gz: 00e76622428f683234f6e7444e38f0b920addc704a31c4c5571efa84a347cfdd
4
+ data.tar.gz: 3d8b60bab2e1e8454ca9bb647bb683e6b84b6d1446d3ab761a764b01fa56111c
5
5
  SHA512:
6
- metadata.gz: 2ad19f6e1bffb1959452eae2f59d31d203412ba9341dabc04746fb8202f72b31dcf8c7ad7f377a6e509c3db8ccbc13b21440ce9456921d55725fe85e8355b2b8
7
- data.tar.gz: 06aeb688c7b0064d0dfc325a34666a01a51f42dcfcc272994583799e1f5c8e9438e88903073b436377550a4ae5c213905cdf171efd93514d70826b2b369ca855
6
+ metadata.gz: dd27b88f5310bd690f02665af0712e86ff2f3b77d820736bbc88ce70fd557fd1b9aa7fc1bb957d8443582ad17c7b756743b44bb7496c0a556e00346494de59e0
7
+ data.tar.gz: ea83632fce9913fa470fcbec625305e3dfe4f72d98c72e81666f5b044ab0266dd51d41f3d5c8f0adcc9c1cf7cf333707eb01a52082cd61c61d1306507288fe38
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,50 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [7.1.37] - 2026-10-21
34
+
35
+ - TAG: [v7.1.37][7.1.37t]
36
+ - COVERAGE: 93.45% -- 11396/12195 lines in 17 files
37
+ - BRANCH COVERAGE: 77.08% -- 4909/6369 branches in 17 files
38
+ - 19.89% documented
39
+
40
+ ### Changed
41
+
42
+ - [kc] kettle-jem/prepare: updated 6 project files:
43
+ - dependencies (6)
44
+
45
+ - [kc] kettle-jem/template: updated 4 project files:
46
+ - code and tests (1)
47
+ - dependencies (2)
48
+ - other (1)
49
+
50
+ - [kc] kettle-jem-deps-floor: Update kettle-jem template dependency floors:
51
+ - appraisal2 (>= 3.2.5 -> >= 3.2.6)
52
+ - appraisal2-rubocop (>= 1.0.4 -> >= 1.0.5)
53
+ - kettle-dev (>= 3.1.19 -> >= 3.1.20)
54
+ - kettle-family (>= 1.3.25 -> >= 1.3.28)
55
+
56
+ ### Fixed
57
+
58
+ - VersionGem bootstrap: emit a compact `%w[version.rb version_gem.rb]` paths loader in the managed version coverage example so generated specs satisfy the default `RSpec/ExampleLength` (Max: 5), and rewrite both previously emitted multi-line array forms (with or without trailing comma) to the compact form on templating.
59
+
60
+ - Stop materializing exact sibling version pins (= x.y.z) into generated Gemfile and modular *_local.gemfile nomono requirement hashes. The destination's own gemspec already enforces those constraints dynamically via the gemspec directive, so the literal copies only went stale on family version bumps and broke bundle resolution (prepare_lockfiles) before templating could refresh them. Flexible constraints (floors) are still materialized.
61
+
62
+ - Include ast-crispr-toml in generated local StructuredMerge Gemfiles so Kettle-family and sibling TOML versions resolve from the same checkout.
63
+
64
+ - Bound JRuby dep-heads bundle and native-extension build concurrency to prevent memory exhaustion on constrained runners
65
+
66
+ ## [7.1.36] - 2026-10-20
67
+
68
+ - TAG: [v7.1.36][7.1.36t]
69
+ - COVERAGE: 93.45% -- 11392/12191 lines in 17 files
70
+ - BRANCH COVERAGE: 77.08% -- 4908/6367 branches in 17 files
71
+ - 19.90% documented
72
+
73
+ ### Fixed
74
+
75
+ - Recognize linked Git worktrees of the local RuboCop-LTS checkout and skip redundant branch switching during templating.
76
+
33
77
  ## [7.1.35] - 2026-10-20
34
78
 
35
79
  - TAG: [v7.1.35][7.1.35t]
@@ -2359,7 +2403,11 @@ Please file a bug if you notice a violation of semantic versioning.
2359
2403
  - Released kettle-jem as part of the initial StructuredMerge Ruby 7.0.0 gem set.
2360
2404
  - Included packaged templates and parser-backed merge support for Ruby gem templating.
2361
2405
 
2362
- [Unreleased]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.35...HEAD
2406
+ [Unreleased]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.37...HEAD
2407
+ [7.1.37]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.36...v7.1.37
2408
+ [7.1.37t]: https://github.com/structuredmerge/structuredmerge-ruby/releases/tag/v7.1.37
2409
+ [7.1.36]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.35...v7.1.36
2410
+ [7.1.36t]: https://github.com/structuredmerge/structuredmerge-ruby/releases/tag/v7.1.36
2363
2411
  [7.1.35]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.34...v7.1.35
2364
2412
  [7.1.35t]: https://github.com/structuredmerge/structuredmerge-ruby/releases/tag/v7.1.35
2365
2413
  [7.1.34]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.33...v7.1.34
data/README.md CHANGED
@@ -923,7 +923,7 @@ Thanks for RTFM. ☺️
923
923
  [📌gitmoji]: https://gitmoji.dev
924
924
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
925
925
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
926
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-12.182-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
926
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-12.195-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
927
927
  [🔐security]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/SECURITY.md
928
928
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
929
929
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -928,7 +928,7 @@ module Kettle
928
928
  end
929
929
 
930
930
  checkout = File.join(local_root, "rubocop-lts")
931
- if project_root && same_path?(project_root, checkout)
931
+ if project_root && (same_path?(project_root, checkout) || same_git_repository?(project_root, checkout))
932
932
  return {
933
933
  name: "rubocop_lts_local_branch",
934
934
  status: "skipped",
@@ -963,6 +963,21 @@ module Kettle
963
963
  Kettle::Dev::Paths.same?(left.to_s, right.to_s)
964
964
  end
965
965
 
966
+ def same_git_repository?(left, right)
967
+ left_common_dir = git_common_dir(left)
968
+ right_common_dir = git_common_dir(right)
969
+ left_common_dir && right_common_dir && same_path?(left_common_dir, right_common_dir)
970
+ end
971
+
972
+ def git_common_dir(path)
973
+ stdout, _stderr, status = Open3.capture3("git", "-C", path.to_s, "rev-parse", "--git-common-dir")
974
+ return unless status.success?
975
+
976
+ File.expand_path(stdout.to_s.strip, path.to_s)
977
+ rescue Errno::ENOENT
978
+ nil
979
+ end
980
+
966
981
  def rubocop_lts_local_root(env)
967
982
  env ||= {}
968
983
  # RUBOCOP_LTS_LOCAL is a compatibility alias for projects generated
@@ -88,7 +88,7 @@ jobs:
88
88
 
89
89
  - name: Bundle install
90
90
  if: ${{ !env.ACT && matrix.ruby == 'jruby' }}
91
- run: bundle install --jobs 4
91
+ run: bundle install --jobs 1
92
92
 
93
93
  - name: Restore RSpec status log
94
94
  if: "${{!env.ACT}}"
@@ -161,7 +161,7 @@ jobs:
161
161
 
162
162
  - name: Bundle install
163
163
  if: ${{ !env.ACT && matrix.ruby == 'jruby' }}
164
- run: bundle install --jobs 4
164
+ run: bundle install --jobs 1
165
165
 
166
166
  - name: Restore RSpec status log
167
167
  if: "${{!env.ACT}}"
@@ -184,6 +184,11 @@ jobs:
184
184
  continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
185
185
  env:
186
186
  BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle_gemfile || 'Appraisal.root.gemfile' }}
187
+ # Keep JVM and native-extension build memory bounded on the constrained runner.
188
+ JRUBY_OPTS: "-J-Xmx1280m"
189
+ BUNDLE_JOBS: "1"
190
+ CARGO_BUILD_JOBS: "1"
191
+ TURBO_TESTS2_MAX_PROCESSES: 2
187
192
  strategy:
188
193
  fail-fast: true
189
194
  matrix:
@@ -235,7 +240,7 @@ jobs:
235
240
 
236
241
  - name: Bundle install
237
242
  if: ${{ !env.ACT && matrix.ruby == 'jruby' }}
238
- run: bundle install --jobs 4
243
+ run: bundle install --jobs 1
239
244
 
240
245
  - name: Restore RSpec status log
241
246
  if: "${{!env.ACT}}"
@@ -5,14 +5,12 @@ permissions:
5
5
 
6
6
  env:
7
7
  K_SOUP_COV_DO: false
8
- # TruffleRuby intermittently stalls the parallel test worker pool; keep
9
- # this lane serial while maintained runtimes exercise the parallel runner.
10
- # Two workers: TruffleRuby parallelism is spawn-based like every other
11
- # engine; serial-only lanes waste CI time and trip the stall watchdog on
12
- # legitimately long tests.
8
+ # Cap worker concurrency to bound memory use on this JVM runtime.
9
+ # Previous worker failures were caused by memory exhaustion, not parallelism;
10
+ # retain two workers rather than disabling parallel execution.
13
11
  TURBO_TESTS2_MAX_PROCESSES: 2
14
- # Serial lanes can legitimately run one long, silent test; give the stall
15
- # watchdog a wider berth than the 4.0 default of 900s.
12
+ # Allow longer silent test windows before the worker watchdog fires.
13
+ # TruffleRuby can need more time than the default 900s threshold.
16
14
  TURBO_TESTS2_WATCHDOG_SECONDS: 1500
17
15
 
18
16
  on:
@@ -5,14 +5,12 @@ permissions:
5
5
 
6
6
  env:
7
7
  K_SOUP_COV_DO: false
8
- # TruffleRuby intermittently stalls the parallel test worker pool; keep
9
- # this lane serial while maintained runtimes exercise the parallel runner.
10
- # Two workers: TruffleRuby parallelism is spawn-based like every other
11
- # engine; serial-only lanes waste CI time and trip the stall watchdog on
12
- # legitimately long tests.
8
+ # Cap worker concurrency to bound memory use on this JVM runtime.
9
+ # Previous worker failures were caused by memory exhaustion, not parallelism;
10
+ # retain two workers rather than disabling parallel execution.
13
11
  TURBO_TESTS2_MAX_PROCESSES: 2
14
- # Serial lanes can legitimately run one long, silent test; give the stall
15
- # watchdog a wider berth than the 4.0 default of 900s.
12
+ # Allow longer silent test windows before the worker watchdog fires.
13
+ # TruffleRuby can need more time than the default 900s threshold.
16
14
  TURBO_TESTS2_WATCHDOG_SECONDS: 1500
17
15
 
18
16
  on:
@@ -5,14 +5,12 @@ permissions:
5
5
 
6
6
  env:
7
7
  K_SOUP_COV_DO: false
8
- # TruffleRuby intermittently stalls the parallel test worker pool; keep
9
- # this lane serial while maintained runtimes exercise the parallel runner.
10
- # Two workers: TruffleRuby parallelism is spawn-based like every other
11
- # engine; serial-only lanes waste CI time and trip the stall watchdog on
12
- # legitimately long tests.
8
+ # Cap worker concurrency to bound memory use on this JVM runtime.
9
+ # Previous worker failures were caused by memory exhaustion, not parallelism;
10
+ # retain two workers rather than disabling parallel execution.
13
11
  TURBO_TESTS2_MAX_PROCESSES: 2
14
- # Serial lanes can legitimately run one long, silent test; give the stall
15
- # watchdog a wider berth than the 4.0 default of 900s.
12
+ # Allow longer silent test windows before the worker watchdog fires.
13
+ # TruffleRuby can need more time than the default 900s threshold.
16
14
  TURBO_TESTS2_WATCHDOG_SECONDS: 1500
17
15
 
18
16
  on:
@@ -5,14 +5,12 @@ permissions:
5
5
 
6
6
  env:
7
7
  K_SOUP_COV_DO: false
8
- # TruffleRuby intermittently stalls the parallel test worker pool; keep
9
- # this lane serial while maintained runtimes exercise the parallel runner.
10
- # Two workers: TruffleRuby parallelism is spawn-based like every other
11
- # engine; serial-only lanes waste CI time and trip the stall watchdog on
12
- # legitimately long tests.
8
+ # Cap worker concurrency to bound memory use on this JVM runtime.
9
+ # Previous worker failures were caused by memory exhaustion, not parallelism;
10
+ # retain two workers rather than disabling parallel execution.
13
11
  TURBO_TESTS2_MAX_PROCESSES: 2
14
- # Serial lanes can legitimately run one long, silent test; give the stall
15
- # watchdog a wider berth than the 4.0 default of 900s.
12
+ # Allow longer silent test windows before the worker watchdog fires.
13
+ # TruffleRuby can need more time than the default 900s threshold.
16
14
  TURBO_TESTS2_WATCHDOG_SECONDS: 1500
17
15
 
18
16
  on:
@@ -5,14 +5,12 @@ permissions:
5
5
 
6
6
  env:
7
7
  K_SOUP_COV_DO: false
8
- # TruffleRuby intermittently stalls the parallel test worker pool; keep
9
- # this lane serial while maintained runtimes exercise the parallel runner.
10
- # Two workers: TruffleRuby parallelism is spawn-based like every other
11
- # engine; serial-only lanes waste CI time and trip the stall watchdog on
12
- # legitimately long tests.
8
+ # Cap worker concurrency to bound memory use on this JVM runtime.
9
+ # Previous worker failures were caused by memory exhaustion, not parallelism;
10
+ # retain two workers rather than disabling parallel execution.
13
11
  TURBO_TESTS2_MAX_PROCESSES: 2
14
- # Serial lanes can legitimately run one long, silent test; give the stall
15
- # watchdog a wider berth than the 4.0 default of 900s.
12
+ # Allow longer silent test windows before the worker watchdog fires.
13
+ # TruffleRuby can need more time than the default 900s threshold.
16
14
  TURBO_TESTS2_WATCHDOG_SECONDS: 1500
17
15
 
18
16
  on:
@@ -5,14 +5,12 @@ permissions:
5
5
 
6
6
  env:
7
7
  K_SOUP_COV_DO: false
8
- # TruffleRuby intermittently stalls the parallel test worker pool; keep
9
- # this lane serial while maintained runtimes exercise the parallel runner.
10
- # Two workers: TruffleRuby parallelism is spawn-based like every other
11
- # engine; serial-only lanes waste CI time and trip the stall watchdog on
12
- # legitimately long tests.
8
+ # Cap worker concurrency to bound memory use on this JVM runtime.
9
+ # Previous worker failures were caused by memory exhaustion, not parallelism;
10
+ # retain two workers rather than disabling parallel execution.
13
11
  TURBO_TESTS2_MAX_PROCESSES: 2
14
- # Serial lanes can legitimately run one long, silent test; give the stall
15
- # watchdog a wider berth than the 4.0 default of 900s.
12
+ # Allow longer silent test windows before the worker watchdog fires.
13
+ # TruffleRuby can need more time than the default 900s threshold.
16
14
  TURBO_TESTS2_WATCHDOG_SECONDS: 1500
17
15
 
18
16
  on:
@@ -118,7 +118,7 @@ Gem::Specification.new do |spec|
118
118
  # and preferably a modular one (see gemfiles/modular/*.gemfile).
119
119
 
120
120
  # Dev, Test, & Release Tasks
121
- spec.add_development_dependency("kettle-dev", "~> 3.1", ">= 3.1.19") # ruby >= {KJ|MIN_TEST_RUBY}
121
+ spec.add_development_dependency("kettle-dev", "~> 3.1", ">= 3.1.20") # ruby >= {KJ|MIN_TEST_RUBY}
122
122
 
123
123
  # Security
124
124
  spec.add_development_dependency("bundler-audit", "~> 0.9.3") # ruby >= 2.0.0
@@ -132,7 +132,7 @@ Gem::Specification.new do |spec|
132
132
  # Testing
133
133
  # Loads version files in anonymous namespaces for coverage without constant redefinition warnings.
134
134
  spec.add_development_dependency("anonymous_loader", "~> 0.1", ">= 0.1.3") # ruby >= 2.2.0
135
- spec.add_development_dependency("appraisal2", "~> 3.2", ">= 3.2.5") # ruby >= 1.8.7, for testing against multiple versions of dependencies
135
+ spec.add_development_dependency("appraisal2", "~> 3.2", ">= 3.2.6") # ruby >= 1.8.7, for testing against multiple versions of dependencies
136
136
  spec.add_development_dependency("kettle-test", "~> 2.0", ">= 2.0.27") # ruby >= {KJ|MIN_TEST_RUBY}
137
137
  spec.add_development_dependency("turbo_tests2", "~> 4.0", ">= 4.0.0") # ruby >= 2.4.0, default kettle-test runner
138
138
 
@@ -12,7 +12,7 @@
12
12
  gem "reek", "~> 6.6", ">= 6.6.0"
13
13
 
14
14
  platform :mri do
15
- gem "appraisal2-rubocop", "~> 1.0", ">= 1.0.4", require: false
15
+ gem "appraisal2-rubocop", "~> 1.0", ">= 1.0.5", require: false
16
16
  gem "rubocop-gradual", "~> 0.4", ">= 0.4.0"
17
17
  # rubocop-minitest floor held at 0.40: 0.41.0 requires rubocop >= 1.89.0,
18
18
  # but standard (~> 1.56) caps rubocop at ~> 1.88.0, making the pair
@@ -37,6 +37,7 @@ structuredmerge_local_gems = %w[
37
37
  yaml-merge
38
38
  zip-merge
39
39
  ast-crispr
40
+ ast-crispr-toml
40
41
  ast-crispr-markdown-markly
41
42
  ast-crispr-ruby-prism
42
43
  ]
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency "{KJ|SHIMMED_GEM_NAME}"
31
31
 
32
32
  # Dev, Test, & Release Tasks
33
- spec.add_development_dependency("kettle-dev", "~> 3.1", ">= 3.1.19") # ruby >= {KJ|MIN_TEST_RUBY}
33
+ spec.add_development_dependency("kettle-dev", "~> 3.1", ">= 3.1.20") # ruby >= {KJ|MIN_TEST_RUBY}
34
34
 
35
35
  # Tasks
36
36
  spec.add_development_dependency "rake", "~> 13.0"
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "7.1.35"
8
+ VERSION = "7.1.37"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
data/lib/kettle/jem.rb CHANGED
@@ -63,7 +63,7 @@ module Kettle
63
63
  TEMPLATE_MANAGED_DEPENDENCIES = [
64
64
  {name: PACKAGE_NAME, requirements: ["~> 7.1", ">= 7.1.28"], bootstrap: false},
65
65
  {name: "nomono", requirements: ["~> 1.1", ">= 1.1.14"], bootstrap: true},
66
- {name: "kettle-dev", requirements: ["~> 3.1", ">= 3.1.19"], bootstrap: true},
66
+ {name: "kettle-dev", requirements: ["~> 3.1", ">= 3.1.20"], bootstrap: true},
67
67
  {
68
68
  name: "kettle-changelog",
69
69
  requirements: ["~> 1.0", ">= 1.0.13"],
@@ -5118,11 +5118,11 @@ module Kettle
5118
5118
 
5119
5119
  def monorepo_root_gemfile_dependency_lines
5120
5120
  [
5121
- {name: "appraisal2", source: %(gem "appraisal2", "~> 3.2", ">= 3.2.5"\n)},
5121
+ {name: "appraisal2", source: %(gem "appraisal2", "~> 3.2", ">= 3.2.6"\n)},
5122
5122
  {name: "bundler-audit", source: %(gem "bundler-audit", "~> 0.9.3"\n)},
5123
- {name: "kettle-dev", source: %(gem "kettle-dev", "~> 3.1", ">= 3.1.19"\n)},
5123
+ {name: "kettle-dev", source: %(gem "kettle-dev", "~> 3.1", ">= 3.1.20"\n)},
5124
5124
  {name: "kettle-drift", source: %(gem "kettle-drift", "~> 1.0", ">= 1.0.17"\n)},
5125
- {name: "kettle-family", source: %(gem "kettle-family", "~> 1.3", ">= 1.3.25"\n)},
5125
+ {name: "kettle-family", source: %(gem "kettle-family", "~> 1.3", ">= 1.3.28"\n)},
5126
5126
  {name: PACKAGE_NAME, source: kettle_jem_dependency_source},
5127
5127
  {name: "kettle-test", source: %(gem "kettle-test", "~> 2.0", ">= 2.0.27"\n)},
5128
5128
  {name: "rake", source: %(gem "rake", "~> 13.0"\n)},
@@ -15687,13 +15687,21 @@ module Kettle
15687
15687
 
15688
15688
  # Reuse the dependency objects in project facts. Never infer a requirement
15689
15689
  # from a sibling's current version or scrape a rendered modular Gemfile.
15690
+ # Exact pins (= x.y.z) are intentionally dropped: the destination's own
15691
+ # gemspec declares them dynamically (e.g. "= #{spec.version}"), so the
15692
+ # `gemspec` directive in the main Gemfile enforces them on every Bundler
15693
+ # run. A materialized literal copy goes stale on the next family version
15694
+ # bump and breaks bundle resolution (prepare_lockfiles) before templating
15695
+ # can refresh it. Flexible constraints (floors) are kept: they survive
15696
+ # bumps and feed local_gem_satisfies?-style gates.
15690
15697
  def gemspec_local_gem_requirements(gemspec_metadata)
15691
15698
  %i[runtime_dependencies development_dependencies].each_with_object({}) do |kind, requirements|
15692
15699
  Array(gemspec_metadata[kind] || gemspec_metadata[kind.to_s]).each do |dependency|
15693
15700
  next unless dependency.respond_to?(:name) && dependency.respond_to?(:requirements_list)
15694
15701
 
15695
15702
  name = dependency.name.to_s
15696
- requirements[name] = (Array(requirements[name]) + dependency.requirements_list).uniq
15703
+ flexible = (Array(requirements[name]) + dependency.requirements_list).uniq.reject { |req| req.to_s.start_with?("=") }
15704
+ requirements[name] = flexible unless flexible.empty?
15697
15705
  end
15698
15706
  end.sort.to_h
15699
15707
  end
@@ -15945,7 +15953,7 @@ module Kettle
15945
15953
  def main_gemfile_kettle_family_gem(package_name)
15946
15954
  return "" if package_name.to_s == "kettle-family"
15947
15955
 
15948
- %(gem "kettle-family", "~> 1.3", ">= 1.3.25"\n)
15956
+ %(gem "kettle-family", "~> 1.3", ">= 1.3.28"\n)
15949
15957
  end
15950
15958
 
15951
15959
  def main_gemfile_nomono_bootstrap(package_name)
@@ -16406,28 +16414,51 @@ module Kettle
16406
16414
  version_path = version_spec_relative_version_path(version_spec_path, entrypoint_require)
16407
16415
  version_gem_path = version_spec_relative_version_gem_path(version_spec_path, entrypoint_require)
16408
16416
  path_loader = if include_version_gem_path
16417
+ # Compact form: the whole example must stay within the default
16418
+ # RSpec/ExampleLength Max of 5 counted lines, because destination
16419
+ # dogfood configs (e.g. rubocop-lts-rspec) lint specs with shipped
16420
+ # configs that do not disable that cop.
16409
16421
  <<~RUBY.chomp
16422
+ dir = File.expand_path("#{File.dirname(version_path)}", __dir__)
16423
+ paths = %w[version.rb version_gem.rb].map { |file| File.join(dir, file) }.select { |path| File.file?(path) }
16424
+ anonymous_namespace = AnonymousLoader.load(files: paths)
16425
+ RUBY
16426
+ else
16427
+ <<~RUBY.chomp
16428
+ path = File.expand_path("#{version_path}", __dir__)
16429
+ anonymous_namespace = AnonymousLoader.load(files: path)
16430
+ RUBY
16431
+ end
16432
+ # Older emitted forms, rewritten on templating. The multi-line array was
16433
+ # emitted both without and with a trailing comma (some destinations
16434
+ # autocorrected to consistent_comma style); most specific first.
16435
+ legacy_path_loaders = [
16436
+ <<~RUBY.chomp,
16437
+ paths = [
16438
+ File.expand_path("#{version_path}", __dir__),
16439
+ File.expand_path("#{version_gem_path}", __dir__),
16440
+ ].select { |path| File.file?(path) }
16441
+ anonymous_namespace = AnonymousLoader.load(files: paths)
16442
+ RUBY
16443
+ <<~RUBY.chomp,
16410
16444
  paths = [
16411
16445
  File.expand_path("#{version_path}", __dir__),
16412
16446
  File.expand_path("#{version_gem_path}", __dir__)
16413
16447
  ].select { |path| File.file?(path) }
16414
16448
  anonymous_namespace = AnonymousLoader.load(files: paths)
16415
16449
  RUBY
16416
- else
16417
16450
  <<~RUBY.chomp
16418
16451
  path = File.expand_path("#{version_path}", __dir__)
16419
16452
  anonymous_namespace = AnonymousLoader.load(files: path)
16420
16453
  RUBY
16421
- end
16422
- legacy_path_loader = <<~RUBY.chomp
16423
- path = File.expand_path("#{version_path}", __dir__)
16424
- anonymous_namespace = AnonymousLoader.load(files: path)
16425
- RUBY
16426
- indented_path_loader = path_loader.lines.map { |line| " #{line}" }.join
16427
- indented_legacy_path_loader = legacy_path_loader.lines.map { |line| " #{line}" }.join
16428
- return content.sub(indented_legacy_path_loader, indented_path_loader) if content.include?(indented_legacy_path_loader)
16454
+ ]
16455
+ indented_path_loader = indent_spec_lines(path_loader)
16456
+ legacy_path_loaders.each do |legacy_path_loader|
16457
+ indented_legacy_path_loader = indent_spec_lines(legacy_path_loader)
16458
+ return content.sub(indented_legacy_path_loader, indented_path_loader) if content.include?(indented_legacy_path_loader)
16429
16459
 
16430
- return content.sub(legacy_path_loader, path_loader) if content.include?(legacy_path_loader)
16460
+ return content.sub(legacy_path_loader, path_loader) if content.include?(legacy_path_loader)
16461
+ end
16431
16462
 
16432
16463
  return content if version_spec_anonymous_loader_call?(content)
16433
16464
 
@@ -16467,6 +16498,10 @@ module Kettle
16467
16498
  "#{"../" * spec_depth}lib/#{entrypoint_require}/version_gem.rb"
16468
16499
  end
16469
16500
 
16501
+ def indent_spec_lines(text)
16502
+ text.lines.map { |line| " #{line}" }.join
16503
+ end
16504
+
16470
16505
  def legacy_rbs_signature_paths(project_root, entrypoint_require)
16471
16506
  legacy_root = File.join(project_root, "sig", entrypoint_require.to_s)
16472
16507
  return [] unless Dir.exist?(legacy_root)
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-jem
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.35
4
+ version: 7.1.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -246,7 +246,7 @@ dependencies:
246
246
  version: '3.1'
247
247
  - - ">="
248
248
  - !ruby/object:Gem::Version
249
- version: 3.1.18
249
+ version: 3.1.19
250
250
  type: :runtime
251
251
  prerelease: false
252
252
  version_requirements: !ruby/object:Gem::Requirement
@@ -256,7 +256,7 @@ dependencies:
256
256
  version: '3.1'
257
257
  - - ">="
258
258
  - !ruby/object:Gem::Version
259
- version: 3.1.18
259
+ version: 3.1.19
260
260
  - !ruby/object:Gem::Dependency
261
261
  name: kettle-gha-pins
262
262
  requirement: !ruby/object:Gem::Requirement
@@ -997,10 +997,10 @@ licenses:
997
997
  - PolyForm-Small-Business-1.0.0
998
998
  metadata:
999
999
  homepage_uri: https://structuredmerge.org
1000
- source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.35
1001
- changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.35/CHANGELOG.md
1000
+ source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.37
1001
+ changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.37/CHANGELOG.md
1002
1002
  bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
1003
- documentation_uri: https://www.rubydoc.info/gems/kettle-jem/7.1.35
1003
+ documentation_uri: https://www.rubydoc.info/gems/kettle-jem/7.1.37
1004
1004
  funding_uri: https://github.com/sponsors/pboling
1005
1005
  wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
1006
1006
  news_uri: https://www.railsbling.com/tags/kettle-jem
metadata.gz.sig CHANGED
Binary file