kettle-jem 7.0.0 → 7.1.3

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.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +1505 -0
  4. data/LICENSE.md +13 -0
  5. data/README.md +794 -0
  6. data/exe/kettle-jem +20 -0
  7. data/lib/kettle/jem/cli.rb +334 -0
  8. data/lib/kettle/jem/license_txt_migrator.rb +33 -0
  9. data/lib/kettle/jem/rakelib/install.rake +10 -0
  10. data/lib/kettle/jem/rakelib/prepare.rake +10 -0
  11. data/lib/kettle/jem/rakelib/selftest.rake +10 -0
  12. data/lib/kettle/jem/rakelib/template.rake +10 -0
  13. data/lib/kettle/jem/tasks/install_task.rb +2178 -0
  14. data/lib/kettle/jem/tasks/prepare_task.rb +274 -0
  15. data/lib/kettle/jem/tasks/self_test_task.rb +256 -0
  16. data/lib/kettle/jem/tasks/template_task.rb +124 -0
  17. data/lib/kettle/jem/tasks.rb +6 -0
  18. data/lib/kettle/jem/templates/.aiignore.example +19 -0
  19. data/lib/kettle/jem/templates/.config/mise/env.sh +26 -0
  20. data/lib/kettle/jem/templates/.devcontainer/apt-install/devcontainer-feature.json.example +9 -0
  21. data/lib/kettle/jem/templates/.devcontainer/apt-install/install.sh.example +19 -0
  22. data/lib/kettle/jem/templates/.devcontainer/devcontainer.json.example +27 -0
  23. data/lib/kettle/jem/templates/.devcontainer/scripts/setup-tree-sitter.sh.example +210 -0
  24. data/lib/kettle/jem/templates/.env.local.example +67 -0
  25. data/lib/kettle/jem/templates/.envrc.example +4 -0
  26. data/lib/kettle/jem/templates/.envrc.no-osc.example +4 -0
  27. data/lib/kettle/jem/templates/.gemrc.example +1 -0
  28. data/lib/kettle/jem/templates/.git-hooks/commit-msg.example +60 -0
  29. data/lib/kettle/jem/templates/.git-hooks/commit-subjects-goalie.txt.example +8 -0
  30. data/lib/kettle/jem/templates/.git-hooks/footer-template.erb.txt.example +16 -0
  31. data/lib/kettle/jem/templates/.git-hooks/prepare-commit-msg.example +9 -0
  32. data/lib/kettle/jem/templates/.github/.codecov.yml.example +14 -0
  33. data/lib/kettle/jem/templates/.github/FUNDING.yml.example +10 -0
  34. data/lib/kettle/jem/templates/.github/FUNDING.yml.no-osc.example +10 -0
  35. data/lib/kettle/jem/templates/.github/copilot_instructions.md.example +1 -0
  36. data/lib/kettle/jem/templates/.github/dependabot.yml.example +13 -0
  37. data/lib/kettle/jem/templates/.github/workflows/auto-assign.yml.example +21 -0
  38. data/lib/kettle/jem/templates/.github/workflows/coverage.yml.example +102 -0
  39. data/lib/kettle/jem/templates/.github/workflows/current.yml.example +86 -0
  40. data/lib/kettle/jem/templates/.github/workflows/dep-heads.yml.example +249 -0
  41. data/lib/kettle/jem/templates/.github/workflows/dependency-review.yml.example +22 -0
  42. data/lib/kettle/jem/templates/.github/workflows/discord-notifier.yml.example +39 -0
  43. data/lib/kettle/jem/templates/.github/workflows/framework-ci.yml.example +81 -0
  44. data/lib/kettle/jem/templates/.github/workflows/heads.yml.example +212 -0
  45. data/lib/kettle/jem/templates/.github/workflows/jruby-10.0.yml.example +91 -0
  46. data/lib/kettle/jem/templates/.github/workflows/jruby-9.1.yml.example +90 -0
  47. data/lib/kettle/jem/templates/.github/workflows/jruby-9.2.yml.example +95 -0
  48. data/lib/kettle/jem/templates/.github/workflows/jruby-9.3.yml.example +95 -0
  49. data/lib/kettle/jem/templates/.github/workflows/jruby-9.4.yml.example +95 -0
  50. data/lib/kettle/jem/templates/.github/workflows/jruby.yml.example +91 -0
  51. data/lib/kettle/jem/templates/.github/workflows/license-eye.yml.example +43 -0
  52. data/lib/kettle/jem/templates/.github/workflows/locked_deps.yml.example +89 -0
  53. data/lib/kettle/jem/templates/.github/workflows/opencollective.yml.example +44 -0
  54. data/lib/kettle/jem/templates/.github/workflows/ruby-2.3.yml.example +80 -0
  55. data/lib/kettle/jem/templates/.github/workflows/ruby-2.4.yml.example +84 -0
  56. data/lib/kettle/jem/templates/.github/workflows/ruby-2.5.yml.example +84 -0
  57. data/lib/kettle/jem/templates/.github/workflows/ruby-2.6.yml.example +84 -0
  58. data/lib/kettle/jem/templates/.github/workflows/ruby-2.7.yml.example +84 -0
  59. data/lib/kettle/jem/templates/.github/workflows/ruby-3.0.yml.example +85 -0
  60. data/lib/kettle/jem/templates/.github/workflows/ruby-3.1.yml.example +83 -0
  61. data/lib/kettle/jem/templates/.github/workflows/ruby-3.2.yml.example +80 -0
  62. data/lib/kettle/jem/templates/.github/workflows/ruby-3.3.yml.example +80 -0
  63. data/lib/kettle/jem/templates/.github/workflows/ruby-3.4.yml.example +80 -0
  64. data/lib/kettle/jem/templates/.github/workflows/style.yml.example +78 -0
  65. data/lib/kettle/jem/templates/.github/workflows/templating.yml.example +86 -0
  66. data/lib/kettle/jem/templates/.github/workflows/truffle.yml.example +91 -0
  67. data/lib/kettle/jem/templates/.github/workflows/truffleruby-22.3.yml.example +92 -0
  68. data/lib/kettle/jem/templates/.github/workflows/truffleruby-23.0.yml.example +92 -0
  69. data/lib/kettle/jem/templates/.github/workflows/truffleruby-23.1.yml.example +78 -0
  70. data/lib/kettle/jem/templates/.github/workflows/truffleruby-24.2.yml.example +91 -0
  71. data/lib/kettle/jem/templates/.github/workflows/truffleruby-25.0.yml.example +96 -0
  72. data/lib/kettle/jem/templates/.github/workflows/truffleruby-33.0.yml.example +91 -0
  73. data/lib/kettle/jem/templates/.github/workflows/unlocked_deps.yml.example +93 -0
  74. data/lib/kettle/jem/templates/.gitignore.example +53 -0
  75. data/lib/kettle/jem/templates/.gitlab-ci.yml.example +134 -0
  76. data/lib/kettle/jem/templates/.idea/.gitignore.example +44 -0
  77. data/lib/kettle/jem/templates/.licenserc.yaml.example +8 -0
  78. data/lib/kettle/jem/templates/.opencollective.yml.example +3 -0
  79. data/lib/kettle/jem/templates/.qlty/qlty.toml.example +79 -0
  80. data/lib/kettle/jem/templates/.rspec.example +10 -0
  81. data/lib/kettle/jem/templates/.rubocop.example +1 -0
  82. data/lib/kettle/jem/templates/.rubocop.yml.example +47 -0
  83. data/lib/kettle/jem/templates/.rubocop_rspec.yml.example +55 -0
  84. data/lib/kettle/jem/templates/.simplecov.example +18 -0
  85. data/lib/kettle/jem/templates/.structuredmerge/git-drivers.toml.example +86 -0
  86. data/lib/kettle/jem/templates/.structuredmerge/kettle-jem.yml.example +519 -0
  87. data/lib/kettle/jem/templates/.yard-lint.yml.example +54 -0
  88. data/lib/kettle/jem/templates/.yardignore.example +13 -0
  89. data/lib/kettle/jem/templates/.yardopts.example +14 -0
  90. data/lib/kettle/jem/templates/AGENTS.md.example +283 -0
  91. data/lib/kettle/jem/templates/AGPL-3.0-only.md.example +235 -0
  92. data/lib/kettle/jem/templates/Appraisal.root.gemfile.example +26 -0
  93. data/lib/kettle/jem/templates/Appraisals.example +150 -0
  94. data/lib/kettle/jem/templates/Big-Time-Public-License.md.example +99 -0
  95. data/lib/kettle/jem/templates/CHANGELOG.md.example +33 -0
  96. data/lib/kettle/jem/templates/CHANGELOG.transfer.md +109 -0
  97. data/lib/kettle/jem/templates/CITATION.cff.example +20 -0
  98. data/lib/kettle/jem/templates/CODE_OF_CONDUCT.md.example +134 -0
  99. data/lib/kettle/jem/templates/CONTRIBUTING.md.example +292 -0
  100. data/lib/kettle/jem/templates/FUNDING.md.example +74 -0
  101. data/lib/kettle/jem/templates/FUNDING.md.no-osc.example +63 -0
  102. data/lib/kettle/jem/templates/Gemfile.example +52 -0
  103. data/lib/kettle/jem/templates/IRP.md.example +34 -0
  104. data/lib/kettle/jem/templates/LICENSE.md.example +3 -0
  105. data/lib/kettle/jem/templates/MIT.md.example +21 -0
  106. data/lib/kettle/jem/templates/PolyForm-Noncommercial-1.0.0.md.example +131 -0
  107. data/lib/kettle/jem/templates/PolyForm-Small-Business-1.0.0.md.example +121 -0
  108. data/lib/kettle/jem/templates/README.md.example +544 -0
  109. data/lib/kettle/jem/templates/REEK +0 -0
  110. data/lib/kettle/jem/templates/RUBOCOP.md.example +78 -0
  111. data/lib/kettle/jem/templates/Rakefile.example +163 -0
  112. data/lib/kettle/jem/templates/SECURITY.md.example +21 -0
  113. data/lib/kettle/jem/templates/bin/setup.example +36 -0
  114. data/lib/kettle/jem/templates/certs/pboling.pem.example +27 -0
  115. data/lib/kettle/jem/templates/gem.gemspec.example +161 -0
  116. data/lib/kettle/jem/templates/gemfiles/modular/benchmark/r4/v0.5.gemfile.example +2 -0
  117. data/lib/kettle/jem/templates/gemfiles/modular/benchmark/vHEAD.gemfile.example +2 -0
  118. data/lib/kettle/jem/templates/gemfiles/modular/cgi/r4/v0.5.gemfile.example +1 -0
  119. data/lib/kettle/jem/templates/gemfiles/modular/cgi/vHEAD.gemfile.example +1 -0
  120. data/lib/kettle/jem/templates/gemfiles/modular/changelog.gemfile.example +6 -0
  121. data/lib/kettle/jem/templates/gemfiles/modular/coverage.gemfile.example +14 -0
  122. data/lib/kettle/jem/templates/gemfiles/modular/coverage_local.gemfile.example +34 -0
  123. data/lib/kettle/jem/templates/gemfiles/modular/debug.gemfile.example +22 -0
  124. data/lib/kettle/jem/templates/gemfiles/modular/documentation.gemfile.example +24 -0
  125. data/lib/kettle/jem/templates/gemfiles/modular/documentation_local.gemfile.example +20 -0
  126. data/lib/kettle/jem/templates/gemfiles/modular/erb/r2/v3.0.gemfile.example +1 -0
  127. data/lib/kettle/jem/templates/gemfiles/modular/erb/r2.3/default.gemfile.example +6 -0
  128. data/lib/kettle/jem/templates/gemfiles/modular/erb/r2.6/v2.2.gemfile.example +3 -0
  129. data/lib/kettle/jem/templates/gemfiles/modular/erb/r3/v5.0.gemfile.example +1 -0
  130. data/lib/kettle/jem/templates/gemfiles/modular/erb/r3.1/v4.0.gemfile.example +2 -0
  131. data/lib/kettle/jem/templates/gemfiles/modular/erb/r4/v5.0.gemfile.example +1 -0
  132. data/lib/kettle/jem/templates/gemfiles/modular/erb/vHEAD.gemfile.example +2 -0
  133. data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_22_3.gemfile.example +6 -0
  134. data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_23_0.gemfile.example +6 -0
  135. data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_23_1.gemfile.example +6 -0
  136. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r2/v0.3.gemfile.example +2 -0
  137. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile.example +3 -0
  138. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r3/v0.3.gemfile.example +2 -0
  139. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r4/v0.3.gemfile.example +2 -0
  140. data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/vHEAD.gemfile.example +2 -0
  141. data/lib/kettle/jem/templates/gemfiles/modular/optional.gemfile.example +16 -0
  142. data/lib/kettle/jem/templates/gemfiles/modular/recording/r2.3/recording.gemfile.example +16 -0
  143. data/lib/kettle/jem/templates/gemfiles/modular/recording/r2.4/recording.gemfile.example +18 -0
  144. data/lib/kettle/jem/templates/gemfiles/modular/recording/r2.5/recording.gemfile.example +16 -0
  145. data/lib/kettle/jem/templates/gemfiles/modular/recording/r3/recording.gemfile.example +16 -0
  146. data/lib/kettle/jem/templates/gemfiles/modular/recording/r4/recording.gemfile.example +16 -0
  147. data/lib/kettle/jem/templates/gemfiles/modular/recording/vHEAD.gemfile.example +2 -0
  148. data/lib/kettle/jem/templates/gemfiles/modular/rspec.gemfile.example +4 -0
  149. data/lib/kettle/jem/templates/gemfiles/modular/runtime_heads.gemfile.example +14 -0
  150. data/lib/kettle/jem/templates/gemfiles/modular/shunted.gemfile.example +21 -0
  151. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r2/v3.0.gemfile.example +5 -0
  152. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile.example +4 -0
  153. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r3/v3.0.gemfile.example +5 -0
  154. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r4/v3.0.gemfile.example +5 -0
  155. data/lib/kettle/jem/templates/gemfiles/modular/stringio/vHEAD.gemfile.example +2 -0
  156. data/lib/kettle/jem/templates/gemfiles/modular/style.gemfile.example +33 -0
  157. data/lib/kettle/jem/templates/gemfiles/modular/style_local.gemfile.example +26 -0
  158. data/lib/kettle/jem/templates/gemfiles/modular/templating.gemfile.example +34 -0
  159. data/lib/kettle/jem/templates/gemfiles/modular/templating_local.gemfile.example +73 -0
  160. data/lib/kettle/jem/templates/gemfiles/modular/webrick/r4/v1.9.gemfile.example +1 -0
  161. data/lib/kettle/jem/templates/gemfiles/modular/webrick/vHEAD.gemfile.example +1 -0
  162. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2/libs.gemfile.example +3 -0
  163. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2.3/libs.gemfile.example +3 -0
  164. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2.4/libs.gemfile.example +3 -0
  165. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2.6/libs.gemfile.example +3 -0
  166. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r3/libs.gemfile.example +3 -0
  167. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r3.1/libs.gemfile.example +5 -0
  168. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r4/libs.gemfile.example +6 -0
  169. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/vHEAD.gemfile.example +6 -0
  170. data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs.gemfile.example +12 -0
  171. data/lib/kettle/jem/templates/lib/gem/version.rb.example +1 -0
  172. data/lib/kettle/jem/templates/lib/gem/version_gem.rb.example +1 -0
  173. data/lib/kettle/jem/templates/mise.toml.example +25 -0
  174. data/lib/kettle/jem/templates/mise.toml.no-osc.example +25 -0
  175. data/lib/kettle/jem/templates/parsers.toml.example +19 -0
  176. data/lib/kettle/jem/templates/readme/partials/basic_usage.md.example +28 -0
  177. data/lib/kettle/jem/templates/readme/partials/configuration.md.example +112 -0
  178. data/lib/kettle/jem/templates/readme/partials/synopsis.md.example +3 -0
  179. data/lib/kettle/jem/templates/shim/.github/workflows/current.yml.example +40 -0
  180. data/lib/kettle/jem/templates/shim/.rspec.example +5 -0
  181. data/lib/kettle/jem/templates/shim/.structuredmerge/kettle-jem.yml.example +28 -0
  182. data/lib/kettle/jem/templates/shim/CHANGELOG.md.example +9 -0
  183. data/lib/kettle/jem/templates/shim/Gemfile.example +14 -0
  184. data/lib/kettle/jem/templates/shim/README.md.example +25 -0
  185. data/lib/kettle/jem/templates/shim/Rakefile.example +8 -0
  186. data/lib/kettle/jem/templates/shim/gem.gemspec.example +45 -0
  187. data/lib/kettle/jem/templates/shim/lib/compat_require.rb.example +3 -0
  188. data/lib/kettle/jem/templates/shim/lib/entrypoint.rb.example +3 -0
  189. data/lib/kettle/jem/templates/shim/lib/version.rb.example +1 -0
  190. data/lib/kettle/jem/templates/shim/spec/shim_spec.rb.example +15 -0
  191. data/lib/kettle/jem/templates/shim/spec/spec_helper.rb.example +23 -0
  192. data/lib/kettle/jem/templates/sig/gem.rbs.example +1 -0
  193. data/lib/kettle/jem/templates/spec/README.md.example +28 -0
  194. data/lib/kettle/jem/templates/spec/spec_helper.rb.example +39 -0
  195. data/lib/kettle/jem/version.rb +5 -3
  196. data/lib/kettle/jem/version_gem.rb +8 -0
  197. data/lib/kettle/jem.rb +18540 -1517
  198. data/lib/kettle-jem.rb +2 -1
  199. data/sig/kettle/jem.rbs +8 -0
  200. data.tar.gz.sig +0 -0
  201. metadata +870 -32
  202. metadata.gz.sig +0 -0
@@ -0,0 +1,163 @@
1
+ # frozen_string_literal: true
2
+
3
+ # {KJ|FREEZE_TOKEN}:freeze
4
+ # To retain chunks of comments & code during kettle-jem templating:
5
+ # Wrap custom sections with freeze markers (e.g., as above and below this comment chunk).
6
+ # kettle-jem will then preserve content between those markers across template runs.
7
+ # {KJ|FREEZE_TOKEN}:unfreeze
8
+
9
+ # {KJ|GEM_NAME} Rakefile v{KJ|KETTLE_JEM_VERSION} - {KJ|TEMPLATE_RUN_DATE}
10
+ # Ruby 2.3 (Safe Navigation) or higher required
11
+ #
12
+ # See LICENSE.md for license information.
13
+ #
14
+ # Copyright (c) {KJ|TEMPLATE_RUN_YEAR} {KJ|AUTHOR:NAME} ({KJ|AUTHOR:DOMAIN})
15
+ #
16
+ # Expected to work in any project that uses Bundler.
17
+ #
18
+ # Sets up tasks for appraisal2, floss_funding, kettle-jem, kettle-dev, rspec, minitest, rubocop_gradual, reek, yard, and stone_checksums.
19
+ #
20
+ # rake appraisal:install # Install Appraisal gemfiles (initial setup...
21
+ # rake appraisal:reset # Delete Appraisal lockfiles (gemfiles/*.gemfile.lock)
22
+ # rake appraisal:generate # Generate Appraisal gemfiles without resolving...
23
+ # rake appraisal:update # Generate and update Appraisal gemfiles
24
+ # rake bench # Run all benchmarks (alias for bench:run)
25
+ # rake bench:list # List available benchmark scripts
26
+ # rake bench:run # Run all benchmark scripts (skips on CI)
27
+ # rake build:generate_checksums # Generate both SHA256 & SHA512 checksums i...
28
+ # rake bundle:audit:check # Checks the Gemfile.lock for insecure depe...
29
+ # rake bundle:audit:update # Updates the bundler-audit vulnerability d...
30
+ # rake ci:act[opt] # Run 'act' with a selected workflow
31
+ # rake coverage # Run specs w/ coverage and open results in...
32
+ # rake default # Default tasks aggregator
33
+ # rake install # Build and install {KJ|GEM_NAME}-1.0.0.gem in...
34
+ # rake install:local # Build and install {KJ|GEM_NAME}-1.0.0.gem in...
35
+ # rake kettle:jem:install # Internal target used by `kettle-jem install`
36
+ # rake kettle:jem:selftest # Self-test: template {KJ|GEM_NAME} against itse...
37
+ # rake kettle:jem:template # Internal target used by scoped `kettle-jem template --only`
38
+ # rake reek # Check for code smells
39
+ # rake reek:update # Run reek and store the output into the RE...
40
+ # rake release[remote] # Create tag v1.0.0 and build and push kett...
41
+ # rake rubocop_gradual # Run RuboCop Gradual
42
+ # rake rubocop_gradual:autocorrect # Run RuboCop Gradual with autocorrect (onl...
43
+ # rake rubocop_gradual:autocorrect_all # Run RuboCop Gradual with autocorrect (saf...
44
+ # rake rubocop_gradual:check # Run RuboCop Gradual to check the lock file
45
+ # rake rubocop_gradual:force_update # Run RuboCop Gradual to force update the l...
46
+ # rake rubocop_gradual_debug # Run RuboCop Gradual
47
+ # rake rubocop_gradual_debug:autocorrect # Run RuboCop Gradual with autocorrect (onl...
48
+ # rake rubocop_gradual_debug:autocorrect_all # Run RuboCop Gradual with autocorrect (saf...
49
+ # rake rubocop_gradual_debug:check # Run RuboCop Gradual to check the lock file
50
+ # rake rubocop_gradual_debug:force_update # Run RuboCop Gradual to force update the l...
51
+ # rake spec # Run RSpec code examples
52
+ # rake test # Run tests
53
+ # rake yard # Generate YARD Documentation
54
+ # rake yard:lint # Lint YARD Documentation
55
+ #
56
+
57
+ # simplecov:disable
58
+ require "bundler/gem_tasks" if !Dir[File.join(__dir__, "*.gemspec")].empty?
59
+ # simplecov:enable
60
+
61
+ # Define a base default task early so other files can enhance it.
62
+ desc "Default tasks aggregator"
63
+ task :default do
64
+ puts "Default task complete."
65
+ end
66
+
67
+ # simplecov:disable
68
+ ### MONOREPO FAMILY TASKS
69
+ if Dir.exist?(File.join(__dir__, "gems"))
70
+ def family_gem_dirs
71
+ {KJ|RAKE:FAMILY_GEM_DIRS_ENUMERATION}
72
+ end
73
+
74
+ def run_kettle_family(*args)
75
+ sh("bundle", "exec", "kettle-family", *args)
76
+ end
77
+
78
+ namespace :family do
79
+ desc "List released Ruby subgems"
80
+ task :list do
81
+ family_gem_dirs.each { |path| puts File.basename(path) }
82
+ end
83
+
84
+ desc "Run release readiness checks for the Ruby gem family"
85
+ task :readiness do
86
+ run_kettle_family("check")
87
+ end
88
+
89
+ desc "Run tests for the Ruby gem family"
90
+ task :test do
91
+ run_kettle_family("test", "--execute")
92
+ end
93
+
94
+ desc "Run lint for the Ruby gem family"
95
+ task :lint do
96
+ run_kettle_family("lint", "--execute")
97
+ end
98
+
99
+ desc "Generate YARD docs for the Ruby gem family"
100
+ task :docs do
101
+ run_kettle_family("docs", "--execute")
102
+ end
103
+
104
+ desc "Report release state for the Ruby gem family"
105
+ task :release_state do
106
+ run_kettle_family("release-state")
107
+ end
108
+
109
+ desc "Run the Ruby gem family release planner"
110
+ task :release do
111
+ run_kettle_family("release")
112
+ end
113
+
114
+ desc "Execute the Ruby gem family release"
115
+ task :release_execute do
116
+ run_kettle_family("release", "--execute")
117
+ end
118
+ end
119
+ end
120
+ # simplecov:enable
121
+
122
+ # External gems that define tasks - add here!
123
+ begin
124
+ require "kettle/dev"
125
+ Kettle::Dev.install_tasks unless Kettle::Dev::RUNNING_AS == "rake"
126
+ rescue LoadError
127
+ warn("NOTE: kettle-dev isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
128
+ end
129
+
130
+ ### TEMPLATING TASKS
131
+ # These tasks are installed for the `kettle-jem` executable. Run full templating
132
+ # through `kettle-jem install`; use `kettle-jem template --only PATH` only for
133
+ # scoped file updates. The executable prepares the environment and then
134
+ # delegates here when rake orchestration is needed.
135
+ kettle_jem_selftest_unavailable_note = nil
136
+ begin
137
+ require "kettle/jem"
138
+ if Kettle::Jem.respond_to?(:install_tasks)
139
+ Kettle::Jem.install_tasks
140
+ else
141
+ kettle_jem_selftest_unavailable_note = "NOTE: kettle-jem #{Kettle::Jem::Version::VERSION} does not provide rake tasks in this environment"
142
+ end
143
+ rescue LoadError
144
+ kettle_jem_selftest_unavailable_note = "NOTE: kettle-jem isn't installed, or is disabled for #{RUBY_VERSION} in the current environment"
145
+ end
146
+
147
+ if kettle_jem_selftest_unavailable_note
148
+ desc("(stub) kettle:jem:selftest is unavailable")
149
+ task("kettle:jem:selftest") do
150
+ warn(kettle_jem_selftest_unavailable_note)
151
+ end
152
+ end
153
+
154
+ ### RELEASE TASKS
155
+ # Setup stone_checksums
156
+ begin
157
+ require "stone_checksums"
158
+ rescue LoadError
159
+ desc("(stub) build:generate_checksums is unavailable")
160
+ task("build:generate_checksums") do
161
+ warn("NOTE: stone_checksums isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
162
+ end
163
+ end
@@ -0,0 +1,21 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ | Version | Supported |
6
+ |----------|-----------|
7
+ | {KJ|SECURITY:SUPPORTED_VERSION} | ✅ |
8
+
9
+ ## Security contact information
10
+
11
+ To report a security vulnerability, please use the
12
+ [Tidelift security contact](https://tidelift.com/security).
13
+ Tidelift will coordinate the fix and disclosure.
14
+
15
+ ## Additional Support
16
+
17
+ If you are interested in support for versions older than the latest release,
18
+ please consider sponsoring the project / maintainer @ https://liberapay.com/{KJ|FUNDING:LIBERAPAY}/donate,
19
+ or find other sponsorship links in the [README].
20
+
21
+ [README]: README.md
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ quiet=false
6
+ bundle_args=(install)
7
+
8
+ for arg in "$@"; do
9
+ case "$arg" in
10
+ --quiet)
11
+ quiet=true
12
+ bundle_args+=(--quiet)
13
+ ;;
14
+ -h|--help)
15
+ cat <<'USAGE'
16
+ Usage: bin/setup [--quiet]
17
+
18
+ Options:
19
+ --quiet Pass --quiet to bundle install and suppress shell tracing.
20
+ USAGE
21
+ exit 0
22
+ ;;
23
+ *)
24
+ printf 'bin/setup: unknown option: %s\n' "$arg" >&2
25
+ exit 2
26
+ ;;
27
+ esac
28
+ done
29
+
30
+ if [ "$quiet" != "true" ]; then
31
+ set -vx
32
+ fi
33
+
34
+ bundle "${bundle_args[@]}"
35
+
36
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
3
+ ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
4
+ A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
5
+ DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
6
+ LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
7
+ uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
8
+ LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
9
+ mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
10
+ coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
11
+ FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
12
+ yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
13
+ to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
14
+ qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
15
+ fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
16
+ HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
17
+ A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
18
+ ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
19
+ wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
20
+ L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
21
+ GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
22
+ kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
23
+ QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
24
+ 0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
25
+ DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
26
+ L9nRqA==
27
+ -----END CERTIFICATE-----
@@ -0,0 +1,161 @@
1
+ # frozen_string_literal: true
2
+
3
+ # {KJ|FREEZE_TOKEN}:freeze
4
+ # To retain chunks of comments & code during kettle-jem templating:
5
+ # Wrap custom sections with freeze markers (e.g., as above and below this comment chunk).
6
+ # kettle-jem will then preserve content between those markers across template runs.
7
+ # {KJ|FREEZE_TOKEN}:unfreeze
8
+
9
+ gem_version =
10
+ if Gem.ruby_version >= Gem::Version.new("3.1")
11
+ # Loading Version into an anonymous module allows version.rb to get code coverage from SimpleCov!
12
+ # See: https://github.com/simplecov-ruby/simplecov/issues/557#issuecomment-2630782358
13
+ # See: https://github.com/panorama-ed/memo_wise/pull/397
14
+ Module.new.tap { |mod| Kernel.load("#{__dir__}/lib/{KJ|GEM_NAME_PATH}/version.rb", mod) }::{KJ|NAMESPACE}::Version::VERSION
15
+ else
16
+ require_relative "lib/{KJ|GEM_NAME_PATH}/version"
17
+ {KJ|NAMESPACE}::Version::VERSION
18
+ end
19
+
20
+ Gem::Specification.new do |spec|
21
+ spec.name = "{KJ|GEM_NAME}"
22
+ spec.version = gem_version
23
+ spec.authors = {KJ|AUTHOR:NAMES}
24
+ spec.email = ["{KJ|AUTHOR:EMAIL}"]
25
+
26
+ spec.summary = "{KJ|PROJECT_EMOJI} {KJ|GEMSPEC_PACKAGE_SUMMARY}"
27
+ spec.description = "{KJ|PROJECT_EMOJI} {KJ|GEMSPEC_PACKAGE_DESCRIPTION}"
28
+ spec.homepage = "{KJ|README:GH_REPOSITORY_URL}"
29
+ spec.licenses = ["MIT"]
30
+ spec.required_ruby_version = ">= 2.3.0"
31
+
32
+ # Linux distros often package gems and securely certify them independent
33
+ # of the official RubyGem certification process. Allowed via ENV["SKIP_GEM_SIGNING"]
34
+ # Ref: https://gitlab.com/ruby-oauth/version_gem/-/issues/3
35
+ # Hence, only enable signing if `SKIP_GEM_SIGNING` is not set in ENV.
36
+ # See CONTRIBUTING.md
37
+ unless ENV.include?("SKIP_GEM_SIGNING")
38
+ user_cert = "certs/#{ENV.fetch("GEM_CERT_USER", ENV["USER"])}.pem"
39
+ cert_file_path = File.join(__dir__, user_cert)
40
+ cert_chain = cert_file_path.split(",")
41
+ cert_chain.select! { |fp| File.exist?(fp) }
42
+ if cert_file_path && cert_chain.any?
43
+ spec.cert_chain = cert_chain
44
+ if $PROGRAM_NAME.end_with?("gem") && ARGV[0] == "build"
45
+ spec.signing_key = File.join(Gem.user_home, ".ssh", "gem-private_key.pem")
46
+ end
47
+ end
48
+ end
49
+
50
+ spec.metadata["homepage_uri"] = "{KJ|HOMEPAGE_URI}"
51
+ spec.metadata["source_code_uri"] = "#{spec.homepage}/tree/v#{spec.version}"
52
+ spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/v#{spec.version}/CHANGELOG.md"
53
+ spec.metadata["bug_tracker_uri"] = "#{spec.homepage}/issues"
54
+ spec.metadata["documentation_uri"] = "https://www.rubydoc.info/gems/#{spec.name}/#{spec.version}"
55
+ spec.metadata["funding_uri"] = "https://github.com/sponsors/{KJ|GH:USER}"
56
+ spec.metadata["wiki_uri"] = "#{spec.homepage}/wiki"
57
+ spec.metadata["news_uri"] = "https://www.railsbling.com/tags/#{spec.name}"
58
+ spec.metadata["discord_uri"] = "https://discord.gg/3qme4XHNKN"
59
+ spec.metadata["mailing_list_uri"] = "{KJ|RUBYFORUM:URL}"
60
+ spec.metadata["rubygems_mfa_required"] = "true"
61
+
62
+ gemspec_root = __dir__
63
+ relative_package_path = lambda do |path|
64
+ {KJ|GEMSPEC:RELATIVE_PACKAGE_PATH_BODY}
65
+ end
66
+ enumerate_package_glob = lambda do |glob|
67
+ {KJ|GEMSPEC:ENUMERATE_PACKAGE_GLOB_BODY}
68
+ end
69
+ enumerate_package_files = lambda do |root|
70
+ enumerate_package_glob.call(File.join(gemspec_root, root, "**", "*"))
71
+ end
72
+ package_metadata_files = %w[
73
+ CHANGELOG.md
74
+ LICENSE.md
75
+ README.md
76
+ sig/{KJ|GEM_NAME_PATH}.rbs
77
+ ].select { |path| File.exist?(File.join(gemspec_root, path)) }
78
+
79
+ # Specify which files are part of the released package.
80
+ spec.files = [
81
+ # Root package metadata
82
+ *package_metadata_files,
83
+ # Code / tasks / data (NOTE: exe/ is specified via spec.bindir and spec.executables below)
84
+ *enumerate_package_files.call("lib"),
85
+ # Executables and executable support scripts
86
+ *enumerate_package_files.call("exe"){KJ|GEMSPEC:PACKAGE_FILE_INCLUDES}{KJ|RUBY_STYLE:TRAILING_ARRAY_COMMA}
87
+ ]
88
+ spec.rdoc_options += [
89
+ "--title",
90
+ "#{spec.name} - #{spec.summary}",
91
+ "--main",
92
+ "README.md",
93
+ "--exclude",
94
+ "^sig/",
95
+ "--line-numbers",
96
+ "--inline-source",
97
+ "--quiet"{KJ|RUBY_STYLE:TRAILING_ARRAY_COMMA}
98
+ ]
99
+ spec.bindir = "exe"
100
+ # Listed files are the relative paths from bindir above.
101
+ spec.executables = []
102
+ spec.require_paths = ["lib"]
103
+
104
+ # Utilities
105
+ spec.add_dependency("version_gem", "~> 1.1", ">= 1.1.15") # ruby >= 2.2.0
106
+
107
+ # NOTE: It is preferable to list development dependencies in the gemspec due to increased
108
+ # visibility and discoverability.
109
+ # However, development dependencies in gemspec will install on
110
+ # all versions of Ruby that will run in CI.
111
+ # This gem, and its gemspec runtime dependencies, will install on Ruby down to {KJ|MIN_RUBY}.
112
+ # This gem, and its gemspec development dependencies, will install on Ruby down to {KJ|MIN_TEST_RUBY}.
113
+ # Thus, dev dependencies in gemspec must have
114
+ #
115
+ # required_ruby_version ">= {KJ|MIN_TEST_RUBY}" (or lower)
116
+ #
117
+ # Development dependencies that require strictly newer Ruby versions should be in a "gemfile",
118
+ # and preferably a modular one (see gemfiles/modular/*.gemfile).
119
+
120
+ # Dev, Test, & Release Tasks
121
+ spec.add_development_dependency("kettle-dev", "~> 3.0", ">= 3.0.0") # ruby >= {KJ|MIN_TEST_RUBY}
122
+
123
+ # Security
124
+ spec.add_development_dependency("bundler-audit", "~> 0.9.3") # ruby >= 2.0.0
125
+
126
+ # Tasks
127
+ spec.add_development_dependency("rake", "~> 13.0") # ruby >= 2.2.0
128
+
129
+ # Debugging
130
+ spec.add_development_dependency("require_bench", "~> 1.0", ">= 1.0.4") # ruby >= 2.2.0
131
+
132
+ # Testing
133
+ # Loads version files in anonymous namespaces for coverage without constant redefinition warnings.
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.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
138
+
139
+ # Releasing
140
+ spec.add_development_dependency("ruby-progressbar", "~> 1.13") # ruby >= 0
141
+ spec.add_development_dependency("stone_checksums", "~> 1.0", ">= 1.0.8") # ruby >= 2.2.0
142
+
143
+ # Git integration (optional)
144
+ # The 'git' gem is optional; {KJ|GEM_NAME} falls back to shelling out to `git` if it is not present.
145
+ # The current release of the git gem depends on activesupport, which makes it too heavy to depend on directly
146
+ # spec.add_dependency("git", ">= 1.19.1") # ruby >= 2.3
147
+
148
+ # Development tasks
149
+ # The cake is a lie. erb v2.2, the oldest release, was never compatible with Ruby 2.3.
150
+ # This means we have no choice but to use the erb that shipped with Ruby 2.3
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
+ # 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
154
+
155
+ # HTTP recording for deterministic specs
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
157
+ # This is done in the "head" appraisal.
158
+ # See: https://github.com/vcr/vcr/issues/1057
159
+ # spec.add_development_dependency("vcr", ">= 4") # 6.0 claims to support ruby >= 2.3, but fails on ruby 2.4
160
+ # spec.add_development_dependency("webmock", ">= 3") # Last version to support ruby >= 2.3
161
+ end
@@ -0,0 +1,2 @@
1
+ # Ruby >= 2.1
2
+ gem "benchmark", "~> 0.5", ">= 0.5.0" # Removed from Std Lib in Ruby 4.0
@@ -0,0 +1,2 @@
1
+ # Ruby >= 2.1
2
+ gem "benchmark", github: "ruby/benchmark", branch: "master"
@@ -0,0 +1 @@
1
+ gem "cgi", ">= 0.5"
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # kettle-changelog depends on the current kettle-dev APIs and the structured
4
+ # Markdown merger. Keep it out of older appraisal jobs whose Ruby cannot load
5
+ # its runtime dependency floor.
6
+ {KJ|KETTLE_CHANGELOG_GEMFILE_DEPENDENCY}
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ # We run code coverage on the latest version of Ruby only.
4
+
5
+ # Set KETTLE_DEV_DEV=true for local development with path-based dependencies.
6
+ # When false (default / CI), remote released gems are used.
7
+ if ENV.fetch("KETTLE_DEV_DEV", "false").casecmp("false").zero?
8
+ # Coverage (remote/released)
9
+ platform :mri do
10
+ gem "kettle-soup-cover", "~> 3.0", ">= 3.0.9", require: false
11
+ end
12
+ else
13
+ eval_gemfile "coverage_local.gemfile"
14
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Local path overrides for development.
4
+ # Loaded by the associated non-local gemfile when KETTLE_DEV_DEV != "false".
5
+
6
+ {KJ|LOCAL_GEMFILE_NOMONO_BOOTSTRAP}
7
+
8
+ local_gems = %w[{KJ|KETTLE_DEV_LOCAL_GEMS}]
9
+ declared_gems = instance_variable_get(:@dependencies).to_a.map(&:name)
10
+ local_gems_to_eval = local_gems - %w[{KJ|PACKAGE_NAME}] - declared_gems
11
+
12
+ # export KETTLE_DEV_DEV=/path/to/my
13
+ platform :mri do
14
+ eval_nomono_gems(
15
+ gems: local_gems_to_eval,
16
+ prefix: "KETTLE_DEV",
17
+ path_env: "KETTLE_DEV_DEV",
18
+ vendored_gems_env: "VENDORED_GEMS",
19
+ vendor_gem_dir_env: "VENDOR_GEM_DIR",
20
+ debug_env: "KETTLE_DEV_DEBUG",
21
+ root: ["src", "my", "kettle-dev"]
22
+ )
23
+
24
+ if ENV.fetch("GALTZO_FLOSS_DEV", "false").casecmp("false") != 0
25
+ eval_nomono_gems(
26
+ gems: %w[turbo_tests2],
27
+ prefix: "GALTZO_FLOSS",
28
+ path_env: "GALTZO_FLOSS_DEV",
29
+ vendored_gems_env: "GALTZO_FLOSS_VENDORED_GEMS",
30
+ vendor_gem_dir_env: "GALTZO_FLOSS_VENDOR_GEM_DIR",
31
+ debug_env: "GALTZO_FLOSS_DEBUG"
32
+ )
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # To retain during kettle-jem templating:
4
+ # kettle-jem:freeze
5
+ # # ... your code
6
+ # kettle-jem:unfreeze
7
+ #
8
+
9
+ # Ex-Standard Library gems
10
+ # irb is included in main Gemfile (and unlocked_deps Appraisal), so it can't be included here.
11
+ # gem "irb", "~> 1.15", ">= 1.15.2" # removed from stdlib in 3.5
12
+
13
+ platform :mri do
14
+ # Debugging - Ensure ENV["DEBUG"] == "true" to use debuggers within spec suite
15
+ # Use binding.break, binding.b, or debugger in code
16
+ gem "debug", ">= 1.1" # ruby >= 2.7
17
+
18
+ # Dev Console - Binding.pry - Irb replacement
19
+ # gem "pry", "~> 0.14" # ruby >= 2.0
20
+ end
21
+
22
+ gem "gem_bench", "~> 2.0", ">= 2.0.5"
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # To retain during kettle-jem templating:
4
+ # kettle-jem:freeze
5
+ # # ... your code
6
+ # kettle-jem:unfreeze
7
+ #
8
+
9
+ # Documentation
10
+ gem "kramdown", "~> 2.5", ">= 2.5.2", require: false # Ruby >= 2.5
11
+ gem "kramdown-parser-gfm", "~> 1.1", require: false # Ruby >= 2.3
12
+ gem "yaml-converter", "~> 0.2", ">= 0.2.5", require: false # Ruby >= 3.2
13
+ gem "yard", "~> 0.9", ">= 0.9.45", require: false
14
+ gem "yard-junk", "~> 0.1", ">= 0.1.0", require: false # Ruby >= 3.1
15
+ gem "yard-lint", "~> 1.10", ">= 1.10.3", require: false # Ruby >= 3.3
16
+ gem "yard-relative_markdown_links", "~> 0.6", require: false
17
+
18
+ if ENV.fetch("GALTZO_FLOSS_DEV", "false").casecmp("false").zero?
19
+ gem "yard-fence", "~> 0.9", ">= 0.9.8", require: false # Ruby >= 3.2
20
+ gem "yard-timekeeper", "~> 0.2", ">= 0.2.6", require: false
21
+ gem "yard-yaml", "~> 0.2", ">= 0.2.5", require: false
22
+ else
23
+ eval_gemfile "documentation_local.gemfile"
24
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Local path overrides for development.
4
+ # Loaded by the associated non-local gemfile when GALTZO_FLOSS_DEV != "false".
5
+
6
+ {KJ|LOCAL_GEMFILE_NOMONO_BOOTSTRAP}
7
+
8
+ local_gems = %w[yard-fence yard-timekeeper yard-yaml]
9
+ declared_gems = instance_variable_get(:@dependencies).to_a.map(&:name)
10
+ local_gems_to_eval = local_gems - %w[{KJ|PACKAGE_NAME}] - declared_gems
11
+
12
+ # export GALTZO_FLOSS_DEV=/path/to/galtzo-floss
13
+ eval_nomono_gems(
14
+ gems: local_gems_to_eval,
15
+ prefix: "GALTZO_FLOSS",
16
+ path_env: "GALTZO_FLOSS_DEV",
17
+ vendored_gems_env: "GALTZO_FLOSS_VENDORED_GEMS",
18
+ vendor_gem_dir_env: "GALTZO_FLOSS_VENDOR_GEM_DIR",
19
+ debug_env: "GALTZO_FLOSS_DEBUG"
20
+ )
@@ -0,0 +1 @@
1
+ gem "erb", "~> 3.0" # ruby >= 2.7.0
@@ -0,0 +1,6 @@
1
+ # The cake is a lie.
2
+ # erb v2.2, the oldest release, was never compatible with Ruby 2.3.
3
+ # In addition, erb does not follow SemVer, and old rubies get dropped in a patch.
4
+ # This means we have no choice but to use the erb that shipped with Ruby 2.3
5
+ # /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)
6
+ # gem "erb", ">= 2.2" # ruby >= 2.3.0
@@ -0,0 +1,3 @@
1
+ # Ruby >= 2.3.0 (claimed, but not true, minimum support is Ruby 2.4)
2
+ # Last version supporting Ruby <= 2.6
3
+ gem "erb", "~> 2.2.2"
@@ -0,0 +1 @@
1
+ gem "erb", "~> 6.0", ">= 6.0.7" # ruby >= 3.2.0
@@ -0,0 +1,2 @@
1
+ # last version compatible with Ruby 3.1
2
+ gem "erb", "~> 4.0" # ruby >= 2.7.0
@@ -0,0 +1 @@
1
+ gem "erb", "~> 6.0", ">= 6.0.7" # ruby >= 3.2.0
@@ -0,0 +1,2 @@
1
+ # Ruby >= 3.2
2
+ gem "erb", github: "ruby/erb", branch: "master"
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ if RUBY_ENGINE == "truffleruby" && RUBY_ENGINE_VERSION.start_with?("22.3")
4
+ # TruffleRuby 22.3 ships the json default gem from its emulated MRI Ruby.
5
+ gem "json", "= 2.5.1"
6
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ if RUBY_ENGINE == "truffleruby" && RUBY_ENGINE_VERSION.start_with?("23.0")
4
+ # TruffleRuby 23.0 ships the json default gem from its emulated MRI Ruby.
5
+ gem "json", "= 2.6.1"
6
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ if RUBY_ENGINE == "truffleruby" && RUBY_ENGINE_VERSION.start_with?("23.1")
4
+ # TruffleRuby 23.1 ships the json default gem from its emulated MRI Ruby.
5
+ gem "json", "= 2.6.3"
6
+ end
@@ -0,0 +1,2 @@
1
+ # Ruby >= 2.5
2
+ gem "mutex_m", "~> 0.2"
@@ -0,0 +1,3 @@
1
+ # Ruby >= 0
2
+ # Last version supporting Ruby <= 2.4
3
+ gem "mutex_m", "~> 0.1"
@@ -0,0 +1,2 @@
1
+ # Ruby >= 2.5
2
+ gem "mutex_m", "~> 0.2"
@@ -0,0 +1,2 @@
1
+ # Ruby >= 2.5
2
+ gem "mutex_m", "~> 0.2"
@@ -0,0 +1,2 @@
1
+ # Ruby >= 2.5 (dependency of omniauth)
2
+ gem "mutex_m", github: "ruby/mutex_m", branch: "master"
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ # To retain during kettle-jem templating:
4
+ # {KJ|FREEZE_TOKEN}:freeze
5
+ # # ... your code
6
+ # {KJ|FREEZE_TOKEN}:unfreeze
7
+ #
8
+
9
+ # Optional dependencies are not depended on directly, but may be used if present.
10
+
11
+ # Required for curated binstubs generated by kettle-jem install
12
+ gem "rbs", ">= 3.0", require: false # ruby >= 3.1
13
+
14
+ # Required for kettle-pre-release
15
+ # URL parsing with Unicode support (falls back to URI if not available)
16
+ gem "addressable", ">= 2.8", "< 3" # ruby >= 2.2