kettle-jem 7.1.4 → 7.1.5

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: 3900eae88b47a873cae6083d0465467ebd57842a12ed7e4b8cab28d37092fef7
4
- data.tar.gz: a0df0ddab136eb1079901cda7ee1715ddb574b5392d2ee314196fd54b2042d7c
3
+ metadata.gz: 0f18b366b9ef0f969ab98c5990293f6596943008b812a420ac196d55d6513199
4
+ data.tar.gz: a81bf6fa14c21c3f7c17f696d2255f15e2f58c707b257eec15d53a2e70438221
5
5
  SHA512:
6
- metadata.gz: 47a922c1ad1fdd9f57838b74de337777129ed2127752c5d579f0070b084fd7973c50ea68f7dd7258cad159229958d611185e4ef3470557f86412a9b53af77211
7
- data.tar.gz: e05ba9400554b325770fcad5bc79c94180c626188c41d003fc1dbd368c322e474fb4ea9484b97fc717e6d8e4b4f6c4b94cda5d29543d5f9418bcd544d7abbb6b
6
+ metadata.gz: 88e5217d202612e369beca997b822afa503b2e0abec7e89dd31b37441a5369894d4885b5ed5f89f202e71bc3b163a25b5a4f8859304826e6e0c3425f92cbb9b0
7
+ data.tar.gz: 56feac9cce546576e41e83a0313cd916f8eb5942ac6307b5f49ac9575461a6a5c99f5b0ab13578463e76f5a2bd70e05649ba01da97f84e0e46b5da3466abbd9e
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,49 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [7.1.5] - 2026-08-24
34
+
35
+ - TAG: [v7.1.5][7.1.5t]
36
+ - COVERAGE: 93.60% -- 10814/11554 lines in 16 files
37
+ - BRANCH COVERAGE: 77.21% -- 4627/5993 branches in 16 files
38
+ - 17.97% documented
39
+
40
+ ### Changed
41
+
42
+ - Template maintenance summaries now use keyed, cumulative [kc] entries with nested file-type counts, so repeated template runs update one changelog entry.
43
+
44
+ - [kc] kettle-jem/funding-platforms: Configure GitHub funding platforms independently, remove disabled destination-only FUNDING.yml entries, and keep README/FUNDING.md badges aligned with the configured policy.
45
+
46
+ - [kc] kettle-jem-deps-floor: Update kettle-jem template dependency floors:
47
+ - kettle-dev (>= 3.0.8 -> >= 3.0.10)
48
+
49
+ - [kc] kettle-jem-workflow-pins: Update pinned GitHub Actions in kettle-jem templates:
50
+ - github/codeql-action/analyze v4.37.6 (5595ccaf912efad79be6eef63a5619ff05969be3) -> v4.37.8 (db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)
51
+ - github/codeql-action/autobuild v4.37.6 (5595ccaf912efad79be6eef63a5619ff05969be3) -> v4.37.8 (db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)
52
+ - github/codeql-action/init v4.37.6 (5595ccaf912efad79be6eef63a5619ff05969be3) -> v4.37.8 (db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)
53
+
54
+ - [kc] kettle-jem/prepare: updated 9 project files:
55
+ - code and tests (1)
56
+ - dependencies (8)
57
+
58
+ - [kc] kettle-jem/template: updated 4 project files:
59
+ - code and tests (1)
60
+ - dependencies (1)
61
+ - documentation (1)
62
+ - other (1)
63
+
64
+ - Document the disposable BUNDLE_LOCKFILE workaround in generated CONTRIBUTING.md release guidance.
65
+
66
+ - Make the repository-local kettle-jem-deps-floor executable bootstrap the consistent StructuredMerge development bundle before loading parser dependencies.
67
+
68
+ ### Fixed
69
+
70
+ - Use Markdown-safe compound keys for automated kettle-jem template changelog entries so release reference validation does not treat their labels as undefined links.
71
+
72
+ - Use a dependency-specific switch when omitting kettle-changelog from release Bundler resolution.
73
+
74
+ - Avoid duplicate tree_sitter_language_pack declarations when templating with a local TSLP override.
75
+
33
76
  ## [7.1.4] - 2026-08-12
34
77
 
35
78
  - TAG: [v7.1.4][7.1.4t]
@@ -1524,7 +1567,9 @@ Please file a bug if you notice a violation of semantic versioning.
1524
1567
  - Released kettle-jem as part of the initial StructuredMerge Ruby 7.0.0 gem set.
1525
1568
  - Included packaged templates and parser-backed merge support for Ruby gem templating.
1526
1569
 
1527
- [Unreleased]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.4...HEAD
1570
+ [Unreleased]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.5...HEAD
1571
+ [7.1.5]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.4...v7.1.5
1572
+ [7.1.5t]: https://github.com/structuredmerge/structuredmerge-ruby/releases/tag/v7.1.5
1528
1573
  [7.1.4]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.3...v7.1.4
1529
1574
  [7.1.4t]: https://github.com/structuredmerge/structuredmerge-ruby/releases/tag/v7.1.4
1530
1575
  [7.1.3]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.2...v7.1.3
data/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  `if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
12
12
 
13
- [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
13
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
14
14
 
15
15
  <details markdown="1">
16
16
  <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
@@ -111,7 +111,9 @@ Merge analysis must enter parsing through `tree_haver`. Parser-specific gems reg
111
111
 
112
112
  </details>
113
113
 
114
- ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/kettle-jem)](https://tidelift.com/subscription/pkg/rubygems-kettle-jem?utm_source=rubygems-kettle-jem&utm_medium=referral&utm_campaign=readme)
114
+ ### Enterprise Support
115
+
116
+ [![Tidelift](https://tidelift.com/badges/package/rubygems/kettle-jem)](https://tidelift.com/subscription/pkg/rubygems-kettle-jem?utm_source=rubygems-kettle-jem&utm_medium=referral&utm_campaign=readme)
115
117
 
116
118
  Available as part of the Tidelift Subscription.
117
119
 
@@ -553,8 +555,7 @@ See [SECURITY.md][🔐security].
553
555
  ## 🤝 Contributing
554
556
 
555
557
  If you need some ideas of where to help, you could work on adding more code coverage,
556
- or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
557
- or use the gem and think about how it could be better.
558
+ check [issues][🤝gh-issues] or [PRs][🤝gh-pulls], or use the gem and think about how it could be better.
558
559
 
559
560
  We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
560
561
 
@@ -644,7 +645,7 @@ To join the community or get help, use the RubyForum or Discord.
644
645
 
645
646
  To say "thanks!" ☝️ Join the community or 👇️ send money.
646
647
 
647
- [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
648
+ [![Sponsor kettle-dev/kettle-jem on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
648
649
 
649
650
  ### Please give the project a star ⭐ ♥.
650
651
 
@@ -655,6 +656,17 @@ Thanks for RTFM. ☺️
655
656
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
656
657
  [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
657
658
  [⛳liberapay]: https://liberapay.com/pboling/donate
659
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/kettle-dev
660
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/kettle-dev
661
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/kettle-dev
662
+ [🖇osc-backers]: https://opencollective.com/kettle-dev#backer
663
+ [🖇osc-backers-i]: https://opencollective.com/kettle-dev/backers/badge.svg?style=flat
664
+ [🖇osc-sponsors]: https://opencollective.com/kettle-dev#sponsor
665
+ [🖇osc-sponsors-i]: https://opencollective.com/kettle-dev/sponsors/badge.svg?style=flat
666
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/kettle-dev?style=for-the-badge
667
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/kettle-dev?style=for-the-badge
668
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/kettle-dev?style=for-the-badge
669
+ [🖇osc]: https://opencollective.com/kettle-dev
658
670
  [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
659
671
  [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
660
672
  [🖇sponsor]: https://github.com/sponsors/pboling
@@ -760,7 +772,7 @@ Thanks for RTFM. ☺️
760
772
  [📌gitmoji]: https://gitmoji.dev
761
773
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
762
774
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
763
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-11.492-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
775
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-11.554-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
764
776
  [🔐security]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/SECURITY.md
765
777
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
766
778
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -790,5 +802,5 @@ Thanks for RTFM. ☺️
790
802
  | Homepage | https://github.com/structuredmerge/structuredmerge-ruby |
791
803
  | Source | https://github.com/structuredmerge/structuredmerge-ruby |
792
804
  | License | `AGPL-3.0-only` OR `PolyForm-Small-Business-1.0.0` |
793
- | Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/kettle-jem, https://www.buymeacoffee.com/pboling |
805
+ | Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/kettle-dev, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/kettle-jem, https://www.buymeacoffee.com/pboling |
794
806
  <!-- kettle-jem:metadata:end -->
@@ -23,6 +23,10 @@ module Kettle
23
23
  configuration: ->(path) { path.start_with?(".structuredmerge/") || path == "mise.toml" || path == ".gitignore" },
24
24
  code_and_tests: ->(path) { path.start_with?("lib/", "spec/", "test/", "bin/") || path == "Rakefile" }
25
25
  }.freeze
26
+ TEMPLATE_CHANGELOG_KEYS = {
27
+ "Apply kettle-jem templates" => "kettle-jem/template",
28
+ "Prepare project for kettle-jem templates" => "kettle-jem/prepare"
29
+ }.freeze
26
30
  BUNDLER_ENVIRONMENT = %w[
27
31
  BUNDLE_BIN_PATH
28
32
  BUNDLE_FROZEN
@@ -91,9 +95,10 @@ module Kettle
91
95
  return report.merge(changelog: {status: "skipped", reason: "no_template_changes", changed_files: []})
92
96
  end
93
97
 
94
- entry = template_run_entry(label, changed_files)
95
- result = add_unreleased_entry(project_root: project_root, section: "Changed", entry: entry)
96
- changelog = result.merge(changed_files: changed_files, entry: entry)
98
+ key = TEMPLATE_CHANGELOG_KEYS.fetch(label, "kettle-jem/template")
99
+ entry = ->(matches) { template_run_entry(changed_files, matches) }
100
+ result = upsert_unreleased_entry(project_root: project_root, section: "Changed", key: key, entry: entry)
101
+ changelog = result.merge(changed_files: changed_files, entry: result.fetch(:entry))
97
102
  changed_files_with_changelog = if result.fetch(:status) == "updated"
98
103
  (Array(report.fetch(:changed_files, [])) + ["CHANGELOG.md"]).uniq.sort
99
104
  else
@@ -108,12 +113,29 @@ module Kettle
108
113
  end
109
114
  end
110
115
 
111
- def template_run_entry(label, changed_files)
112
- counts = changed_files.group_by { |path| template_change_category(path) }
113
- .sort_by { |category, _paths| category.to_s }
114
- .map { |category, paths| "#{category.to_s.tr("_", " ")} (#{paths.length})" }
115
- areas = counts.empty? ? "project files" : counts.join(", ")
116
- "#{label}: updated #{changed_files.length} project file#{"s" unless changed_files.length == 1} across #{areas}."
116
+ def template_run_entry(changed_files, matches)
117
+ counts = template_entry_counts(matches)
118
+ changed_files.group_by { |path| template_change_category(path) }.each do |category, paths|
119
+ counts[category] = counts.fetch(category, 0) + paths.length
120
+ end
121
+ total = counts.values.sum
122
+ details = counts.sort_by { |category, _count| category.to_s }.map do |category, count|
123
+ " - #{category.to_s.tr("_", " ")} (#{count})"
124
+ end
125
+ ["updated #{total} project file#{"s" unless total == 1}:", *details].join("\n")
126
+ end
127
+
128
+ def template_entry_counts(matches)
129
+ source = Array(matches).first.to_h.fetch(:source, "")
130
+ source.lines.filter_map do |line|
131
+ match = line.match(/\A\s{2,}- (.+?) \((\d+)\)\s*\z/)
132
+ next unless match
133
+
134
+ category = match[1].tr(" ", "_").to_sym
135
+ next unless TEMPLATE_CHANGE_CATEGORIES.key?(category) || category == :other
136
+
137
+ [category, match[2].to_i]
138
+ end.to_h
117
139
  end
118
140
 
119
141
  def template_change_category(path)
@@ -266,6 +266,15 @@ NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in th
266
266
  14. Run `bundle exec rake release` which will create a git tag for the version,
267
267
  push git commits and tags, and push the `.gem` file to the gem host configured in the gemspec.
268
268
 
269
+ The automated `kettle-release` flow runs the build and release tasks with a
270
+ temporary `BUNDLE_LOCKFILE`. Bundler can rewrite a tracked lockfile while
271
+ reconciling the host platform even after the release lockfile has been
272
+ normalized with `bundle lock --add-platform`; that rewrite trips the clean-tree
273
+ guard in `bundler/gem_tasks`. The disposable lockfile preserves the committed
274
+ release inputs while allowing Bundler's runtime reconciliation. Do not replace
275
+ this with `BUNDLE_FROZEN=true`: frozen mode fails when Bundler needs that
276
+ reconciliation.
277
+
269
278
  [📜src-gl]: {KJ|README:GL_PACKAGE_SOURCE_URL}
270
279
  [📜src-cb]: {KJ|README:CB_PACKAGE_SOURCE_URL}
271
280
  [📜src-gh]: {KJ|README:GH_PACKAGE_SOURCE_URL}
@@ -77,7 +77,11 @@ The _amazing_ test matrix is powered by the kettle-dev stack.
77
77
 
78
78
  </details>
79
79
 
80
- ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/{KJ|GEM_NAME})](https://tidelift.com/subscription/pkg/rubygems-{KJ|GEM_NAME}?utm_source=rubygems-{KJ|GEM_NAME}&utm_medium=referral&utm_campaign=readme)
80
+ ### Enterprise Support
81
+
82
+ <!-- KJ:FUNDING_TIDELIFT:START -->
83
+ [![Tidelift](https://tidelift.com/badges/package/rubygems/{KJ|GEM_NAME})](https://tidelift.com/subscription/pkg/rubygems-{KJ|GEM_NAME}?utm_source=rubygems-{KJ|GEM_NAME}&utm_medium=referral&utm_campaign=readme)
84
+ <!-- KJ:FUNDING_TIDELIFT:END -->
81
85
 
82
86
  Available as part of the Tidelift Subscription.
83
87
 
@@ -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.0", ">= 3.0.6") # ruby >= {KJ|MIN_TEST_RUBY}
121
+ spec.add_development_dependency("kettle-dev", "~> 3.0", ">= 3.0.10") # 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
@@ -133,8 +133,8 @@ Gem::Specification.new do |spec|
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
135
  spec.add_development_dependency("appraisal2", "~> 3.2", ">= 3.2.2") # ruby >= 1.8.7, for testing against multiple versions of dependencies
136
- spec.add_development_dependency("kettle-test", "~> 2.0", ">= 2.0.19") # ruby >= {KJ|MIN_TEST_RUBY}
137
- spec.add_development_dependency("turbo_tests2", "~> 3.2", ">= 3.2.5") # ruby >= 2.4.0, default kettle-test runner
136
+ spec.add_development_dependency("kettle-test", "~> 2.0", ">= 2.0.20") # ruby >= {KJ|MIN_TEST_RUBY}
137
+ spec.add_development_dependency("turbo_tests2", "~> 3.2", ">= 3.2.6") # ruby >= 2.4.0, default kettle-test runner
138
138
 
139
139
  # Releasing
140
140
  spec.add_development_dependency("ruby-progressbar", "~> 1.13") # ruby >= 0
@@ -150,7 +150,7 @@ Gem::Specification.new do |spec|
150
150
  # This means we have no choice but to use the erb that shipped with Ruby 2.3
151
151
  # /opt/hostedtoolcache/Ruby/2.3.8/x64/lib/ruby/gems/2.3.0/gems/erb-2.2.2/lib/erb.rb:670:in `prepare_trim_mode': undefined method `match?' for "-":String (NoMethodError)
152
152
  # spec.add_development_dependency("erb", ">= 2.2") # ruby >= 2.3.0, not SemVer, old rubies get dropped in a patch.
153
- spec.add_development_dependency("gitmoji-regex", "~> 2.0", ">= 2.0.11") # ruby >= 2.4
153
+ spec.add_development_dependency("gitmoji-regex", "~> 2.0", ">= 2.0.12") # ruby >= 2.4
154
154
 
155
155
  # HTTP recording for deterministic specs
156
156
  # In Ruby 3.5 (HEAD) the CGI library has been pared down, so we also need to depend on gem "cgi" for ruby@head
@@ -5,14 +5,15 @@ kettle_remote = ENV.fetch("KETTLE_DEV_DEV", "false").casecmp("false").zero?
5
5
 
6
6
  tslp_dev = ENV.fetch("TSLP_DEV", nil).to_s
7
7
  tslp_dev = nil if tslp_dev.empty? || %w[false 0 no off].include?(tslp_dev.downcase)
8
- if tslp_dev.to_s.empty?
9
- if structuredmerge_remote
10
- # Parser dependencies for released installs.
11
- gem "tree_sitter_language_pack", "~> 1.14", ">= 1.14.3"
12
- end
13
- else
14
- # Explicit local override for unreleased TSLP debugging.
15
- gem "tree_sitter_language_pack", path: tslp_dev
8
+ if structuredmerge_remote || !tslp_dev.to_s.empty?
9
+ # Keep one Bundler declaration so the local debugging override cannot be
10
+ # mistaken for a second dependency declaration.
11
+ tslp_requirements = if tslp_dev.to_s.empty?
12
+ ["~> 1.15", ">= 1.15.7"]
13
+ else
14
+ [{ path: tslp_dev }]
15
+ end
16
+ gem "tree_sitter_language_pack", *tslp_requirements
16
17
  end
17
18
 
18
19
  if structuredmerge_remote
@@ -29,6 +29,19 @@ defaults:
29
29
  preference: template
30
30
  add_template_only_nodes: true
31
31
  freeze_token: kettle-jem
32
+ funding:
33
+ buy_me_a_coffee: true
34
+ community_bridge: true
35
+ github: true
36
+ issuehunt: false
37
+ ko_fi: true
38
+ liberapay: true
39
+ open_collective: "example-org"
40
+ patreon: false
41
+ paypal: true
42
+ polar: false
43
+ thanks_dev: true
44
+ tidelift: true
32
45
  patterns:
33
46
  - path: "certs/**"
34
47
  strategy: raw_copy
@@ -30,13 +30,13 @@ 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.0", ">= 3.0.6") # ruby >= {KJ|MIN_TEST_RUBY}
33
+ spec.add_development_dependency("kettle-dev", "~> 3.0", ">= 3.0.10") # ruby >= {KJ|MIN_TEST_RUBY}
34
34
 
35
35
  # Tasks
36
36
  spec.add_development_dependency "rake", "~> 13.0"
37
37
 
38
38
  # Testing
39
- spec.add_development_dependency("kettle-test", "~> 2.0", ">= 2.0.19") # ruby >= {KJ|MIN_TEST_RUBY}
39
+ spec.add_development_dependency("kettle-test", "~> 2.0", ">= 2.0.20") # ruby >= {KJ|MIN_TEST_RUBY}
40
40
  spec.add_development_dependency "rspec", "~> 3.12"
41
41
 
42
42
  # Releasing
@@ -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.4"
8
+ VERSION = "7.1.5"
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
@@ -1407,6 +1407,63 @@ module Kettle
1407
1407
  "🖇osc-sponsors-img",
1408
1408
  "🖇osc-sponsors-bottom-img"
1409
1409
  ].freeze
1410
+ FUNDING_YML_PLATFORMS = %w[
1411
+ buy_me_a_coffee
1412
+ community_bridge
1413
+ github
1414
+ issuehunt
1415
+ ko_fi
1416
+ liberapay
1417
+ open_collective
1418
+ patreon
1419
+ polar
1420
+ thanks_dev
1421
+ tidelift
1422
+ ].freeze
1423
+ FUNDING_README_PLATFORMS = (FUNDING_YML_PLATFORMS + ["paypal"]).freeze
1424
+ FUNDING_DEFAULT_DISABLED_PLATFORMS = %w[issuehunt patreon polar].freeze
1425
+ README_FUNDING_BADGE_POLICIES = {
1426
+ "github" => {
1427
+ badges: [
1428
+ "[![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor]",
1429
+ "[![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor]"
1430
+ ],
1431
+ labels: ["🖇sponsor", "🖇sponsor-img", "🖇sponsor-bottom-img"]
1432
+ },
1433
+ "liberapay" => {
1434
+ badges: [
1435
+ "[![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay]",
1436
+ "[![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay]"
1437
+ ],
1438
+ labels: ["⛳liberapay", "⛳liberapay-img", "⛳liberapay-bottom-img"]
1439
+ },
1440
+ "paypal" => {
1441
+ badges: [
1442
+ "[![Donate on PayPal][🖇paypal-img]][🖇paypal]",
1443
+ "[![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]"
1444
+ ],
1445
+ labels: ["🖇paypal", "🖇paypal-img", "🖇paypal-bottom-img"]
1446
+ },
1447
+ "buy_me_a_coffee" => {
1448
+ badges: [
1449
+ "[![Buy me a coffee][🖇buyme-small-img]][🖇buyme]"
1450
+ ],
1451
+ labels: ["🖇buyme", "🖇buyme-small-img", "🖇buyme-img"]
1452
+ },
1453
+ "ko_fi" => {
1454
+ badges: [
1455
+ "[![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]",
1456
+ "[![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]"
1457
+ ],
1458
+ labels: ["🖇kofi", "🖇kofi-img"]
1459
+ },
1460
+ "tidelift" => {
1461
+ badges: [
1462
+ "[![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]"
1463
+ ],
1464
+ labels: ["🏙️entsup-tidelift", "🏙️entsup-tidelift-img"]
1465
+ }
1466
+ }.freeze
1410
1467
  README_INTEGRATIONS = %w[codecov coveralls qlty codeql skywalking-eyes].freeze
1411
1468
  README_STAR_HISTORY_MIN_STARS = 150
1412
1469
  README_DISCOVERED_INTEGRATIONS = (README_INTEGRATIONS - [SKYWALKING_EYES_INTEGRATION]).freeze
@@ -3161,6 +3218,7 @@ module Kettle
3161
3218
  facts[:ruby_style] = ruby_style_facts(project_root)
3162
3219
  opencollective_policy = opencollective_policy(kettle_config, env)
3163
3220
  opencollective_disabled = opencollective_policy.fetch(:disabled)
3221
+ funding_platforms = funding_platform_policies(kettle_config, env)
3164
3222
  detected_open_collective_org = opencollective_org(project_root, kettle_config, env, opencollective_disabled: opencollective_disabled)
3165
3223
  detected_open_collective_org ||= fallback_opencollective_org unless opencollective_disabled
3166
3224
  funding = compact_hash(
@@ -3168,9 +3226,11 @@ module Kettle
3168
3226
  project_root,
3169
3227
  package_name,
3170
3228
  opencollective_disabled: opencollective_disabled,
3171
- open_collective_org: detected_open_collective_org && detected_open_collective_org.fetch(:org)
3229
+ open_collective_org: detected_open_collective_org && detected_open_collective_org.fetch(:org),
3230
+ enabled_platforms: funding_platforms
3172
3231
  ),
3173
- platform_tokens: funding_platform_token_facts(kettle_config, env)
3232
+ platform_tokens: funding_platform_token_facts(kettle_config, env),
3233
+ platforms: funding_platforms
3174
3234
  )
3175
3235
  funding[:open_collective_disabled] = true if opencollective_disabled
3176
3236
  funding[:open_collective_disabled_source] = opencollective_policy[:source] if opencollective_disabled
@@ -3410,6 +3470,7 @@ module Kettle
3410
3470
  facts[:social] = social unless social.empty?
3411
3471
  opencollective_policy = opencollective_policy(kettle_config, env)
3412
3472
  opencollective_disabled = opencollective_policy.fetch(:disabled)
3473
+ funding_platforms = funding_platform_policies(kettle_config, env)
3413
3474
  open_collective_org = opencollective_org(project_root, kettle_config, env, opencollective_disabled: opencollective_disabled)
3414
3475
  open_collective_org ||= fallback_opencollective_org unless opencollective_disabled
3415
3476
  funding = compact_hash(
@@ -3418,8 +3479,10 @@ module Kettle
3418
3479
  name,
3419
3480
  funding_uri: metadata_value(gemspec_metadata, :funding_uri),
3420
3481
  opencollective_disabled: opencollective_disabled,
3421
- open_collective_org: open_collective_org && open_collective_org.fetch(:org)
3422
- )
3482
+ open_collective_org: open_collective_org && open_collective_org.fetch(:org),
3483
+ enabled_platforms: funding_platforms
3484
+ ),
3485
+ platforms: funding_platforms
3423
3486
  )
3424
3487
  funding_tokens = funding_platform_token_facts(kettle_config, env)
3425
3488
  funding[:platform_tokens] = funding_tokens unless funding_tokens.empty?
@@ -5320,15 +5383,15 @@ module Kettle
5320
5383
  [
5321
5384
  {name: "appraisal2", source: %(gem "appraisal2", "~> 3.2", ">= 3.2.2"\n)},
5322
5385
  {name: "bundler-audit", source: %(gem "bundler-audit", "~> 0.9.3"\n)},
5323
- {name: "kettle-dev", source: %(gem "kettle-dev", "~> 3.0", ">= 3.0.6"\n)},
5386
+ {name: "kettle-dev", source: %(gem "kettle-dev", "~> 3.0", ">= 3.0.10"\n)},
5324
5387
  {name: "kettle-drift", source: %(gem "kettle-drift", "~> 1.0", ">= 1.0.12"\n)},
5325
- {name: "kettle-family", source: %(gem "kettle-family", "~> 1.2", ">= 1.2.51"\n)},
5326
- {name: "kettle-jem", source: %(gem "kettle-jem", "~> 7.1", ">= 7.1.3"\n)},
5327
- {name: "kettle-test", source: %(gem "kettle-test", "~> 2.0", ">= 2.0.19"\n)},
5388
+ {name: "kettle-family", source: %(gem "kettle-family", "~> 1.2", ">= 1.2.58"\n)},
5389
+ {name: "kettle-jem", source: %(gem "kettle-jem", "~> 7.1", ">= 7.1.4"\n)},
5390
+ {name: "kettle-test", source: %(gem "kettle-test", "~> 2.0", ">= 2.0.20"\n)},
5328
5391
  {name: "rake", source: %(gem "rake", "~> 13.0"\n)},
5329
5392
  {name: "rspec", source: %(gem "rspec", "~> 3.0"\n)},
5330
5393
  {name: "stone_checksums", source: %(gem "stone_checksums", "~> 1.0", ">= 1.0.8"\n)},
5331
- {name: "turbo_tests2", source: %(gem "turbo_tests2", "~> 3.2", ">= 3.2.5"\n)}
5394
+ {name: "turbo_tests2", source: %(gem "turbo_tests2", "~> 3.2", ">= 3.2.6"\n)}
5332
5395
  ].freeze
5333
5396
  end
5334
5397
 
@@ -7018,6 +7081,8 @@ module Kettle
7018
7081
  merged = preserve_mise_project_settings(recipe, merged, original, project_root: project_root, facts: facts) if template_file_type(recipe) == :toml
7019
7082
  return finalize_template_source_content(recipe, sync_kettle_config_env_overrides(merged, env)) if recipe.fetch(:target_path) == KETTLE_CONFIG_PATH
7020
7083
 
7084
+ merged = postprocess_funding_markdown_content(merged, facts) if recipe.fetch(:target_path) == "FUNDING.md"
7085
+
7021
7086
  if github_workflow_template_recipe?(recipe)
7022
7087
  merged = preserve_github_workflow_project_settings(recipe, merged, original, project_root: project_root)
7023
7088
  merged = finalize_github_workflow_template(merged, facts)
@@ -7030,6 +7095,7 @@ module Kettle
7030
7095
  accepted = finalize_accepted_template_source(recipe, resolved, original, facts: facts, project_root: project_root)
7031
7096
  accepted = preserve_github_workflow_project_settings(recipe, accepted, original, project_root: project_root) if github_workflow_template_recipe?(recipe)
7032
7097
  accepted = sync_kettle_config_env_overrides(accepted, env) if recipe.fetch(:target_path) == KETTLE_CONFIG_PATH
7098
+ accepted = postprocess_funding_markdown_content(accepted, facts) if recipe.fetch(:target_path) == "FUNDING.md"
7033
7099
  if github_workflow_template_recipe?(recipe)
7034
7100
  accepted = finalize_github_workflow_template(accepted, facts)
7035
7101
  accepted = preserve_newer_github_workflow_action_pins(accepted, original)
@@ -7047,6 +7113,7 @@ module Kettle
7047
7113
  end
7048
7114
 
7049
7115
  resolved = finalize_github_workflow_template(resolved, facts) if github_workflow_template_recipe?(recipe)
7116
+ resolved = postprocess_funding_markdown_content(resolved, facts) if recipe.fetch(:target_path) == "FUNDING.md"
7050
7117
  if recipe.fetch(:target_path) == "README.md"
7051
7118
  return postprocess_readme_content(
7052
7119
  resolved,
@@ -7366,6 +7433,11 @@ module Kettle
7366
7433
  open_collective_enabled = !facts.dig(:funding, :open_collective_disabled)
7367
7434
  processed = apply_markdown_conditional_block(content, "OPEN_COLLECTIVE", keep: open_collective_enabled)
7368
7435
  processed = apply_markdown_conditional_block(processed, "NO_OPEN_COLLECTIVE", keep: !open_collective_enabled)
7436
+ processed = apply_markdown_conditional_block(
7437
+ processed,
7438
+ "FUNDING_TIDELIFT",
7439
+ keep: funding_platform_enabled?(facts.dig(:funding, :platforms), "tidelift")
7440
+ )
7369
7441
  star_history_enabled = facts.dig(:repository, :star_history, :enabled) == true
7370
7442
  return processed if star_history_enabled
7371
7443
 
@@ -7378,6 +7450,28 @@ module Kettle
7378
7450
  )
7379
7451
  end
7380
7452
 
7453
+ def postprocess_funding_markdown_content(content, facts)
7454
+ open_collective_enabled = !facts.dig(:funding, :open_collective_disabled)
7455
+ processed = apply_markdown_conditional_block(content, "OPEN_COLLECTIVE", keep: open_collective_enabled)
7456
+ processed = apply_markdown_conditional_block(processed, "NO_OPEN_COLLECTIVE", keep: !open_collective_enabled)
7457
+ funding_platforms = facts.dig(:funding, :platforms)
7458
+ if facts.dig(:funding, :open_collective_disabled)
7459
+ processed = remove_readme_badge_and_refs(
7460
+ processed,
7461
+ README_OPEN_COLLECTIVE_FUNDING_BADGES,
7462
+ README_OPEN_COLLECTIVE_LINK_LABELS
7463
+ )
7464
+ end
7465
+ README_FUNDING_BADGE_POLICIES.each do |platform, policy|
7466
+ next if funding_platform_enabled?(funding_platforms, platform)
7467
+
7468
+ processed = policy.fetch(:badges).reduce(processed) do |badge_content, badge|
7469
+ remove_readme_badge_and_refs(badge_content, badge, policy.fetch(:labels))
7470
+ end
7471
+ end
7472
+ processed
7473
+ end
7474
+
7381
7475
  def apply_readme_badge_policy(content, facts)
7382
7476
  processed = with_readme_timing("badge_policy.codetriage") do
7383
7477
  remove_readme_badge_and_refs(content, README_CODETRIAGE_BADGE, README_CODETRIAGE_LINK_LABELS)
@@ -7405,6 +7499,16 @@ module Kettle
7405
7499
  )
7406
7500
  end
7407
7501
  end
7502
+ funding_platforms = facts.dig(:funding, :platforms)
7503
+ README_FUNDING_BADGE_POLICIES.each do |platform, policy|
7504
+ next if funding_platform_enabled?(funding_platforms, platform)
7505
+
7506
+ processed = with_readme_timing("badge_policy.#{platform}") do
7507
+ policy.fetch(:badges).reduce(processed) do |badge_content, badge|
7508
+ remove_readme_badge_and_refs(badge_content, badge, policy.fetch(:labels))
7509
+ end
7510
+ end
7511
+ end
7408
7512
  Array(facts.dig(:readme_style, :disabled_integrations)).each do |integration|
7409
7513
  patterns = README_INTEGRATION_BADGE_PATTERNS.fetch(integration.to_s, [])
7410
7514
  labels = README_INTEGRATION_LINK_LABELS.fetch(integration.to_s, [])
@@ -13101,24 +13205,38 @@ module Kettle
13101
13205
  engines.map { |engine| engine.to_s.strip.downcase }.reject(&:empty?).uniq
13102
13206
  end
13103
13207
 
13104
- def funding_urls(project_root, package_name, funding_uri: nil, opencollective_disabled: false, open_collective_org: nil)
13208
+ def funding_urls(project_root, package_name, funding_uri: nil, opencollective_disabled: false, open_collective_org: nil, enabled_platforms: nil)
13105
13209
  urls = [funding_uri]
13106
13210
  path = File.join(project_root, ".github", "FUNDING.yml")
13107
- urls.concat(github_funding_urls(path, opencollective_disabled: opencollective_disabled)) if File.exist?(path)
13108
- urls << github_funding_platform_urls("open_collective", [open_collective_org]).first unless opencollective_disabled
13109
- urls << github_funding_platform_urls("tidelift", ["rubygems/#{package_name}"]).first
13211
+ if File.exist?(path)
13212
+ urls.concat(
13213
+ github_funding_urls(
13214
+ path,
13215
+ opencollective_disabled: opencollective_disabled,
13216
+ enabled_platforms: enabled_platforms
13217
+ )
13218
+ )
13219
+ end
13220
+ if !opencollective_disabled && funding_platform_enabled?(enabled_platforms, "open_collective")
13221
+ urls << github_funding_platform_urls("open_collective", [open_collective_org]).first
13222
+ end
13223
+ if funding_platform_enabled?(enabled_platforms, "tidelift")
13224
+ urls << github_funding_platform_urls("tidelift", ["rubygems/#{package_name}"]).first
13225
+ end
13110
13226
 
13111
13227
  urls.compact.uniq.sort
13112
13228
  end
13113
13229
 
13114
- def github_funding_urls(path, opencollective_disabled: false)
13230
+ def github_funding_urls(path, opencollective_disabled: false, enabled_platforms: nil)
13115
13231
  funding = YAML.safe_load_file(path, permitted_classes: [], aliases: false) || {}
13116
13232
  return [] unless funding.is_a?(Hash)
13117
13233
 
13118
13234
  funding.flat_map do |platform, value|
13119
- next [] if opencollective_disabled && platform.to_s == "open_collective"
13235
+ normalized_platform = platform.to_s
13236
+ next [] if opencollective_disabled && normalized_platform == "open_collective"
13237
+ next [] unless funding_platform_enabled?(enabled_platforms, normalized_platform)
13120
13238
 
13121
- github_funding_platform_urls(platform.to_s, Array(value).compact)
13239
+ github_funding_platform_urls(normalized_platform, Array(value).compact)
13122
13240
  end
13123
13241
  end
13124
13242
 
@@ -13743,6 +13861,27 @@ module Kettle
13743
13861
  opencollective_policy(config, env).fetch(:disabled)
13744
13862
  end
13745
13863
 
13864
+ def funding_platform_policies(config, env)
13865
+ funding = config["funding"]
13866
+ configured = funding.is_a?(Hash) ? funding : {}
13867
+ FUNDING_README_PLATFORMS.to_h do |platform|
13868
+ value = if platform == "open_collective"
13869
+ !opencollective_policy(config, env).fetch(:disabled)
13870
+ elsif configured.key?(platform)
13871
+ !falsey_config?(configured.fetch(platform))
13872
+ else
13873
+ !FUNDING_DEFAULT_DISABLED_PLATFORMS.include?(platform)
13874
+ end
13875
+ [platform, value]
13876
+ end
13877
+ end
13878
+
13879
+ def funding_platform_enabled?(enabled_platforms, platform)
13880
+ return true unless enabled_platforms.is_a?(Hash)
13881
+
13882
+ enabled_platforms.fetch(platform.to_s, true) == true
13883
+ end
13884
+
13746
13885
  def opencollective_policy(config, env)
13747
13886
  funding = config["funding"]
13748
13887
  if funding.is_a?(Hash) && funding.key?("open_collective")
@@ -13922,7 +14061,9 @@ module Kettle
13922
14061
  return "" if package_name == "kettle-changelog"
13923
14062
 
13924
14063
  <<~RUBY.chomp
13925
- kettle_changelog_skip = ENV.fetch("KETTLE_DEV_SKIP_CHANGELOG", "false").downcase
14064
+ # Release lockfile/build commands set this dependency-specific switch so
14065
+ # the development tool cannot pull unpublished family gems into resolution.
14066
+ kettle_changelog_skip = ENV.fetch("KETTLE_DEV_SKIP_CHANGELOG_DEPENDENCY", "false").downcase
13926
14067
  kettle_changelog_skip = %w[true 1 yes on].include?(kettle_changelog_skip)
13927
14068
  kettle_changelog_local = ENV.fetch("KETTLE_DEV_DEV", "false").downcase
13928
14069
  kettle_changelog_local = !%w[false 0 no off].include?(kettle_changelog_local)
@@ -14896,7 +15037,7 @@ module Kettle
14896
15037
  def main_gemfile_kettle_family_gem(package_name)
14897
15038
  return "" if package_name.to_s == "kettle-family"
14898
15039
 
14899
- %(gem "kettle-family", "~> 1.2", ">= 1.2.51"\n)
15040
+ %(gem "kettle-family", "~> 1.2", ">= 1.2.58"\n)
14900
15041
  end
14901
15042
 
14902
15043
  def main_gemfile_nomono_bootstrap(package_name)
@@ -18523,9 +18664,15 @@ module Kettle
18523
18664
 
18524
18665
  def synchronize_github_funding_yml(content, facts)
18525
18666
  output = content.to_s
18526
- output = remove_top_level_yaml_key_lines(output, "open_collective") if facts.fetch(:funding, {})[:open_collective_disabled]
18667
+ enabled_platforms = facts.fetch(:funding, {}).fetch(:platforms, {})
18668
+ enabled_platforms = enabled_platforms.merge("open_collective" => false) if facts.fetch(:funding, {})[:open_collective_disabled]
18669
+ FUNDING_YML_PLATFORMS.each do |platform|
18670
+ next if funding_platform_enabled?(enabled_platforms, platform)
18671
+
18672
+ output = remove_top_level_yaml_key_lines(output, platform)
18673
+ end
18527
18674
  tidelift_value = "rubygems/#{facts.fetch(:package).fetch(:name)}"
18528
- unless yaml_top_level_key_lines(output).key?("tidelift")
18675
+ if funding_platform_enabled?(enabled_platforms, "tidelift") && !yaml_top_level_key_lines(output).key?("tidelift")
18529
18676
  lines = output.lines
18530
18677
  lines << "\n" unless lines.empty? || lines.last.to_s.strip.empty?
18531
18678
  lines << "tidelift: #{tidelift_value}\n"
@@ -19407,9 +19554,9 @@ module Kettle
19407
19554
  "actions/upload-artifact" => "actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1",
19408
19555
  "amancevice/setup-code-climate" => "amancevice/setup-code-climate@0daf2985a225e8ac15975b4d233010e94d65b76a # v2",
19409
19556
  "actions/dependency-review-action" => "actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0",
19410
- "github/codeql-action/init" => "github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6",
19411
- "github/codeql-action/autobuild" => "github/codeql-action/autobuild@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6",
19412
- "github/codeql-action/analyze" => "github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6",
19557
+ "github/codeql-action/init" => "github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8",
19558
+ "github/codeql-action/autobuild" => "github/codeql-action/autobuild@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8",
19559
+ "github/codeql-action/analyze" => "github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8",
19413
19560
  "pozil/auto-assign-issue" => "pozil/auto-assign-issue@af6beea6bdf1e8eb373f061c5bc168681fc6d011 # v4.0.1",
19414
19561
  "apache/skywalking-eyes/dependency" => "apache/skywalking-eyes/dependency@61275cc80d0798a405cb070f7d3a8aaf7cf2c2c1 # v0.8.0",
19415
19562
  "sarisia/actions-status-discord" => "sarisia/actions-status-discord@eb045afee445dc055c18d3d90bd0f244fd062708 # v1.16.0"
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.4
4
+ version: 7.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: '7.1'
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 7.1.3
69
+ version: 7.1.4
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '7.1'
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 7.1.3
79
+ version: 7.1.4
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: ast-crispr-ruby-prism
82
82
  requirement: !ruby/object:Gem::Requirement
@@ -86,7 +86,7 @@ dependencies:
86
86
  version: '7.1'
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 7.1.3
89
+ version: 7.1.4
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
@@ -96,7 +96,7 @@ dependencies:
96
96
  version: '7.1'
97
97
  - - ">="
98
98
  - !ruby/object:Gem::Version
99
- version: 7.1.3
99
+ version: 7.1.4
100
100
  - !ruby/object:Gem::Dependency
101
101
  name: ast-merge
102
102
  requirement: !ruby/object:Gem::Requirement
@@ -106,7 +106,7 @@ dependencies:
106
106
  version: '7.1'
107
107
  - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: 7.1.3
109
+ version: 7.1.4
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
@@ -116,7 +116,7 @@ dependencies:
116
116
  version: '7.1'
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: 7.1.3
119
+ version: 7.1.4
120
120
  - !ruby/object:Gem::Dependency
121
121
  name: bash-merge
122
122
  requirement: !ruby/object:Gem::Requirement
@@ -126,7 +126,7 @@ dependencies:
126
126
  version: '7.1'
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
- version: 7.1.3
129
+ version: 7.1.4
130
130
  type: :runtime
131
131
  prerelease: false
132
132
  version_requirements: !ruby/object:Gem::Requirement
@@ -136,7 +136,7 @@ dependencies:
136
136
  version: '7.1'
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
- version: 7.1.3
139
+ version: 7.1.4
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: citrus-toml-merge
142
142
  requirement: !ruby/object:Gem::Requirement
@@ -146,7 +146,7 @@ dependencies:
146
146
  version: '7.1'
147
147
  - - ">="
148
148
  - !ruby/object:Gem::Version
149
- version: 7.1.3
149
+ version: 7.1.4
150
150
  type: :runtime
151
151
  prerelease: false
152
152
  version_requirements: !ruby/object:Gem::Requirement
@@ -156,7 +156,7 @@ dependencies:
156
156
  version: '7.1'
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: 7.1.3
159
+ version: 7.1.4
160
160
  - !ruby/object:Gem::Dependency
161
161
  name: commonmarker-merge
162
162
  requirement: !ruby/object:Gem::Requirement
@@ -166,7 +166,7 @@ dependencies:
166
166
  version: '7.1'
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- version: 7.1.3
169
+ version: 7.1.4
170
170
  type: :runtime
171
171
  prerelease: false
172
172
  version_requirements: !ruby/object:Gem::Requirement
@@ -176,7 +176,7 @@ dependencies:
176
176
  version: '7.1'
177
177
  - - ">="
178
178
  - !ruby/object:Gem::Version
179
- version: 7.1.3
179
+ version: 7.1.4
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: dotenv-merge
182
182
  requirement: !ruby/object:Gem::Requirement
@@ -186,7 +186,7 @@ dependencies:
186
186
  version: '7.1'
187
187
  - - ">="
188
188
  - !ruby/object:Gem::Version
189
- version: 7.1.3
189
+ version: 7.1.4
190
190
  type: :runtime
191
191
  prerelease: false
192
192
  version_requirements: !ruby/object:Gem::Requirement
@@ -196,7 +196,7 @@ dependencies:
196
196
  version: '7.1'
197
197
  - - ">="
198
198
  - !ruby/object:Gem::Version
199
- version: 7.1.3
199
+ version: 7.1.4
200
200
  - !ruby/object:Gem::Dependency
201
201
  name: json-merge
202
202
  requirement: !ruby/object:Gem::Requirement
@@ -206,7 +206,7 @@ dependencies:
206
206
  version: '7.1'
207
207
  - - ">="
208
208
  - !ruby/object:Gem::Version
209
- version: 7.1.3
209
+ version: 7.1.4
210
210
  type: :runtime
211
211
  prerelease: false
212
212
  version_requirements: !ruby/object:Gem::Requirement
@@ -216,7 +216,7 @@ dependencies:
216
216
  version: '7.1'
217
217
  - - ">="
218
218
  - !ruby/object:Gem::Version
219
- version: 7.1.3
219
+ version: 7.1.4
220
220
  - !ruby/object:Gem::Dependency
221
221
  name: kettle-changelog
222
222
  requirement: !ruby/object:Gem::Requirement
@@ -326,7 +326,7 @@ dependencies:
326
326
  version: '7.1'
327
327
  - - ">="
328
328
  - !ruby/object:Gem::Version
329
- version: 7.1.3
329
+ version: 7.1.4
330
330
  type: :runtime
331
331
  prerelease: false
332
332
  version_requirements: !ruby/object:Gem::Requirement
@@ -336,7 +336,7 @@ dependencies:
336
336
  version: '7.1'
337
337
  - - ">="
338
338
  - !ruby/object:Gem::Version
339
- version: 7.1.3
339
+ version: 7.1.4
340
340
  - !ruby/object:Gem::Dependency
341
341
  name: markdown-merge
342
342
  requirement: !ruby/object:Gem::Requirement
@@ -346,7 +346,7 @@ dependencies:
346
346
  version: '7.1'
347
347
  - - ">="
348
348
  - !ruby/object:Gem::Version
349
- version: 7.1.3
349
+ version: 7.1.4
350
350
  type: :runtime
351
351
  prerelease: false
352
352
  version_requirements: !ruby/object:Gem::Requirement
@@ -356,7 +356,7 @@ dependencies:
356
356
  version: '7.1'
357
357
  - - ">="
358
358
  - !ruby/object:Gem::Version
359
- version: 7.1.3
359
+ version: 7.1.4
360
360
  - !ruby/object:Gem::Dependency
361
361
  name: markly-merge
362
362
  requirement: !ruby/object:Gem::Requirement
@@ -366,7 +366,7 @@ dependencies:
366
366
  version: '7.1'
367
367
  - - ">="
368
368
  - !ruby/object:Gem::Version
369
- version: 7.1.3
369
+ version: 7.1.4
370
370
  type: :runtime
371
371
  prerelease: false
372
372
  version_requirements: !ruby/object:Gem::Requirement
@@ -376,7 +376,7 @@ dependencies:
376
376
  version: '7.1'
377
377
  - - ">="
378
378
  - !ruby/object:Gem::Version
379
- version: 7.1.3
379
+ version: 7.1.4
380
380
  - !ruby/object:Gem::Dependency
381
381
  name: parslet
382
382
  requirement: !ruby/object:Gem::Requirement
@@ -400,7 +400,7 @@ dependencies:
400
400
  version: '7.1'
401
401
  - - ">="
402
402
  - !ruby/object:Gem::Version
403
- version: 7.1.3
403
+ version: 7.1.4
404
404
  type: :runtime
405
405
  prerelease: false
406
406
  version_requirements: !ruby/object:Gem::Requirement
@@ -410,7 +410,7 @@ dependencies:
410
410
  version: '7.1'
411
411
  - - ">="
412
412
  - !ruby/object:Gem::Version
413
- version: 7.1.3
413
+ version: 7.1.4
414
414
  - !ruby/object:Gem::Dependency
415
415
  name: psych-merge
416
416
  requirement: !ruby/object:Gem::Requirement
@@ -420,7 +420,7 @@ dependencies:
420
420
  version: '7.1'
421
421
  - - ">="
422
422
  - !ruby/object:Gem::Version
423
- version: 7.1.3
423
+ version: 7.1.4
424
424
  type: :runtime
425
425
  prerelease: false
426
426
  version_requirements: !ruby/object:Gem::Requirement
@@ -430,7 +430,7 @@ dependencies:
430
430
  version: '7.1'
431
431
  - - ">="
432
432
  - !ruby/object:Gem::Version
433
- version: 7.1.3
433
+ version: 7.1.4
434
434
  - !ruby/object:Gem::Dependency
435
435
  name: rbs
436
436
  requirement: !ruby/object:Gem::Requirement
@@ -454,7 +454,7 @@ dependencies:
454
454
  version: '7.1'
455
455
  - - ">="
456
456
  - !ruby/object:Gem::Version
457
- version: 7.1.3
457
+ version: 7.1.4
458
458
  type: :runtime
459
459
  prerelease: false
460
460
  version_requirements: !ruby/object:Gem::Requirement
@@ -464,7 +464,7 @@ dependencies:
464
464
  version: '7.1'
465
465
  - - ">="
466
466
  - !ruby/object:Gem::Version
467
- version: 7.1.3
467
+ version: 7.1.4
468
468
  - !ruby/object:Gem::Dependency
469
469
  name: ruby-merge
470
470
  requirement: !ruby/object:Gem::Requirement
@@ -474,7 +474,7 @@ dependencies:
474
474
  version: '7.1'
475
475
  - - ">="
476
476
  - !ruby/object:Gem::Version
477
- version: 7.1.3
477
+ version: 7.1.4
478
478
  type: :runtime
479
479
  prerelease: false
480
480
  version_requirements: !ruby/object:Gem::Requirement
@@ -484,7 +484,7 @@ dependencies:
484
484
  version: '7.1'
485
485
  - - ">="
486
486
  - !ruby/object:Gem::Version
487
- version: 7.1.3
487
+ version: 7.1.4
488
488
  - !ruby/object:Gem::Dependency
489
489
  name: token-resolver
490
490
  requirement: !ruby/object:Gem::Requirement
@@ -514,7 +514,7 @@ dependencies:
514
514
  version: '7.1'
515
515
  - - ">="
516
516
  - !ruby/object:Gem::Version
517
- version: 7.1.3
517
+ version: 7.1.4
518
518
  type: :runtime
519
519
  prerelease: false
520
520
  version_requirements: !ruby/object:Gem::Requirement
@@ -524,7 +524,7 @@ dependencies:
524
524
  version: '7.1'
525
525
  - - ">="
526
526
  - !ruby/object:Gem::Version
527
- version: 7.1.3
527
+ version: 7.1.4
528
528
  - !ruby/object:Gem::Dependency
529
529
  name: toml-rb
530
530
  requirement: !ruby/object:Gem::Requirement
@@ -548,7 +548,7 @@ dependencies:
548
548
  version: '7.1'
549
549
  - - ">="
550
550
  - !ruby/object:Gem::Version
551
- version: 7.1.3
551
+ version: 7.1.4
552
552
  type: :runtime
553
553
  prerelease: false
554
554
  version_requirements: !ruby/object:Gem::Requirement
@@ -558,7 +558,7 @@ dependencies:
558
558
  version: '7.1'
559
559
  - - ">="
560
560
  - !ruby/object:Gem::Version
561
- version: 7.1.3
561
+ version: 7.1.4
562
562
  - !ruby/object:Gem::Dependency
563
563
  name: yaml-merge
564
564
  requirement: !ruby/object:Gem::Requirement
@@ -568,7 +568,7 @@ dependencies:
568
568
  version: '7.1'
569
569
  - - ">="
570
570
  - !ruby/object:Gem::Version
571
- version: 7.1.3
571
+ version: 7.1.4
572
572
  type: :runtime
573
573
  prerelease: false
574
574
  version_requirements: !ruby/object:Gem::Requirement
@@ -578,7 +578,7 @@ dependencies:
578
578
  version: '7.1'
579
579
  - - ">="
580
580
  - !ruby/object:Gem::Version
581
- version: 7.1.3
581
+ version: 7.1.4
582
582
  - !ruby/object:Gem::Dependency
583
583
  name: bundler-audit
584
584
  requirement: !ruby/object:Gem::Requirement
@@ -676,7 +676,7 @@ dependencies:
676
676
  version: '2.0'
677
677
  - - ">="
678
678
  - !ruby/object:Gem::Version
679
- version: 2.0.19
679
+ version: 2.0.20
680
680
  type: :development
681
681
  prerelease: false
682
682
  version_requirements: !ruby/object:Gem::Requirement
@@ -686,7 +686,7 @@ dependencies:
686
686
  version: '2.0'
687
687
  - - ">="
688
688
  - !ruby/object:Gem::Version
689
- version: 2.0.19
689
+ version: 2.0.20
690
690
  - !ruby/object:Gem::Dependency
691
691
  name: turbo_tests2
692
692
  requirement: !ruby/object:Gem::Requirement
@@ -696,7 +696,7 @@ dependencies:
696
696
  version: '3.2'
697
697
  - - ">="
698
698
  - !ruby/object:Gem::Version
699
- version: 3.2.5
699
+ version: 3.2.6
700
700
  type: :development
701
701
  prerelease: false
702
702
  version_requirements: !ruby/object:Gem::Requirement
@@ -706,7 +706,7 @@ dependencies:
706
706
  version: '3.2'
707
707
  - - ">="
708
708
  - !ruby/object:Gem::Version
709
- version: 3.2.5
709
+ version: 3.2.6
710
710
  - !ruby/object:Gem::Dependency
711
711
  name: ruby-progressbar
712
712
  requirement: !ruby/object:Gem::Requirement
@@ -750,7 +750,7 @@ dependencies:
750
750
  version: '2.0'
751
751
  - - ">="
752
752
  - !ruby/object:Gem::Version
753
- version: 2.0.11
753
+ version: 2.0.12
754
754
  type: :development
755
755
  prerelease: false
756
756
  version_requirements: !ruby/object:Gem::Requirement
@@ -760,7 +760,7 @@ dependencies:
760
760
  version: '2.0'
761
761
  - - ">="
762
762
  - !ruby/object:Gem::Version
763
- version: 2.0.11
763
+ version: 2.0.12
764
764
  description: "\U0001F52E Kettle::Jem provides gem scaffolding, templating, and setup
765
765
  automation using the *-merge gem family for AST-based file merging and token-resolver
766
766
  for template token resolution. Includes MergerConfig presets, YAML recipes, and
@@ -976,10 +976,10 @@ licenses:
976
976
  - PolyForm-Small-Business-1.0.0
977
977
  metadata:
978
978
  homepage_uri: https://structuredmerge.org
979
- source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.4
980
- changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.4/CHANGELOG.md
979
+ source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.5
980
+ changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.5/CHANGELOG.md
981
981
  bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
982
- documentation_uri: https://www.rubydoc.info/gems/kettle-jem/7.1.4
982
+ documentation_uri: https://www.rubydoc.info/gems/kettle-jem/7.1.5
983
983
  funding_uri: https://github.com/sponsors/pboling
984
984
  wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
985
985
  news_uri: https://www.railsbling.com/tags/kettle-jem
metadata.gz.sig CHANGED
Binary file