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,86 @@
1
+ # Targets the evergreen latest release of ruby
2
+ name: Current MRI
3
+
4
+ permissions:
5
+ contents: read
6
+
7
+ env:
8
+ K_SOUP_COV_DO: false
9
+
10
+ on:
11
+ push:
12
+ branches:
13
+ - 'main'
14
+ - '*-stable'
15
+ tags:
16
+ - '!*' # Do not execute on tags
17
+ pull_request:
18
+ branches:
19
+ - '*'
20
+ # Allow manually triggering the workflow.
21
+ workflow_dispatch:
22
+
23
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
24
+ concurrency:
25
+ # The concurrency group contains the workflow name and the branch name.
26
+ group: "${{ github.workflow }}-${{ github.ref }}"
27
+ cancel-in-progress: true
28
+
29
+ jobs:
30
+ test:
31
+ if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
32
+ name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
33
+ runs-on: ubuntu-latest
34
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
35
+ BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
36
+ strategy:
37
+ matrix:
38
+ include:
39
+ # Ruby 4.0
40
+ - ruby: "ruby"
41
+ appraisal: "current"
42
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
43
+ rubygems: latest
44
+ bundler: latest
45
+
46
+ steps:
47
+ - name: Checkout
48
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
49
+ with:
50
+ persist-credentials: false
51
+
52
+ - name: Setup Ruby & RubyGems
53
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
54
+ with:
55
+ ruby-version: ${{ matrix.ruby }}
56
+ rubygems: ${{ matrix.rubygems }}
57
+ bundler: ${{ matrix.bundler }}
58
+ bundler-cache: true
59
+ manual-compatibility-bundle: true
60
+ gem-install-retries: 7
61
+
62
+ - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
63
+ id: bundleAppraisalAttempt1
64
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
65
+ # Continue to the next step on failure
66
+ continue-on-error: true
67
+
68
+ # Effectively an automatic retry of the previous step.
69
+ - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
70
+ id: bundleAppraisalAttempt2
71
+ # If bundleAppraisalAttempt1 failed, try again here; Otherwise skip.
72
+ if: ${{ steps.bundleAppraisalAttempt1.outcome == 'failure' }}
73
+ run: bundle exec appraisal ${{ matrix.appraisal }} install
74
+
75
+ - name: Restore RSpec status log
76
+ if: "${{!env.ACT}}"
77
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
78
+ with:
79
+ path: .rspec_status
80
+ key: rspec-status-current-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
81
+ restore-keys: |
82
+ rspec-status-current-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
83
+ rspec-status-current-${{matrix.ruby}}-${{matrix.appraisal}}-
84
+
85
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
86
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -0,0 +1,249 @@
1
+ # Targets enabled evergreen Ruby engines and tests against the HEAD of runtime dependencies
2
+ name: Runtime Deps @ HEAD
3
+
4
+ permissions:
5
+ contents: read
6
+
7
+ env:
8
+ K_SOUP_COV_DO: false
9
+
10
+ on:
11
+ push:
12
+ branches:
13
+ - 'main'
14
+ - '*-stable'
15
+ tags:
16
+ - '!*' # Do not execute on tags
17
+ pull_request:
18
+ branches:
19
+ - '*'
20
+ # Allow manually triggering the workflow.
21
+ workflow_dispatch:
22
+
23
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
24
+ concurrency:
25
+ # The concurrency group contains the workflow name and the branch name.
26
+ group: "${{ github.workflow }}-${{ github.ref }}"
27
+ cancel-in-progress: true
28
+
29
+ jobs:
30
+ ruby:
31
+ if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
32
+ name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
33
+ runs-on: ubuntu-latest
34
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
35
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
36
+ BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle_gemfile || 'Appraisal.root.gemfile' }}
37
+ strategy:
38
+ fail-fast: true
39
+ matrix:
40
+ include:
41
+ # Ruby 3.4
42
+ - ruby: "ruby"
43
+ appraisal: "dep-heads"
44
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
45
+ # Run directly from the generated appraisal Gemfile so setup-ruby
46
+ # does not bootstrap Appraisal.root.gemfile against dependency
47
+ # sources before this dep-heads appraisal is selected.
48
+ # This makes gemfiles/dep_heads.gemfile required checked-in output
49
+ # for repositories using this generated workflow.
50
+ bundle_gemfile: "gemfiles/dep_heads.gemfile"
51
+ direct_bundle: true
52
+ rubygems: latest
53
+ bundler: latest
54
+
55
+ steps:
56
+ - name: Checkout
57
+ if: ${{ !env.ACT }}
58
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
59
+ with:
60
+ persist-credentials: false
61
+
62
+ - name: Setup Ruby & RubyGems
63
+ if: ${{ !env.ACT }}
64
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
65
+ with:
66
+ ruby-version: ${{ matrix.ruby }}
67
+ rubygems: ${{ matrix.rubygems }}
68
+ bundler: ${{ matrix.bundler }}
69
+ bundler-cache: ${{ matrix.ruby != 'jruby' }}
70
+ manual-compatibility-bundle: true
71
+ gem-install-retries: 7
72
+ # Direct appraisal Gemfiles can contain Bundler GIT/PATH lockfile
73
+ # sections that rv clean-install does not currently parse.
74
+ use-setup-ruby: "3.2 3.3 3.4 4.0"
75
+
76
+ - name: Prepare engine-specific lockfile
77
+ if: ${{ !env.ACT && matrix.ruby == 'jruby' }}
78
+ run: |
79
+ BUNDLE_LOCKFILE="${RUNNER_TEMP}/kettle-jem-lockfiles/${{ matrix.appraisal }}-${{ matrix.ruby }}.lock"
80
+ echo "BUNDLE_LOCKFILE=${BUNDLE_LOCKFILE}" >> "$GITHUB_ENV"
81
+ mkdir -p "$(dirname "$BUNDLE_LOCKFILE")"
82
+ if [ "${{ matrix.ruby }}" = "jruby" ]; then
83
+ bundle lock --lockfile="$BUNDLE_LOCKFILE" --add-platform=universal-java --update
84
+ fi
85
+
86
+ - name: Bundle install
87
+ if: ${{ !env.ACT && matrix.ruby == 'jruby' }}
88
+ run: bundle install --jobs 4
89
+
90
+ - name: Restore RSpec status log
91
+ if: "${{!env.ACT}}"
92
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
93
+ with:
94
+ path: .rspec_status
95
+ key: rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
96
+ restore-keys: |
97
+ rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
98
+ rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-
99
+
100
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
101
+ if: ${{ !env.ACT }}
102
+ run: bundle exec ${{ matrix.exec_cmd }}
103
+
104
+ truffleruby:
105
+ if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'truffleruby/') || startsWith(github.head_ref, 'feature/release'))"
106
+ name: Specs truffleruby@dep-heads
107
+ runs-on: ubuntu-latest
108
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
109
+ env:
110
+ BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle_gemfile || 'Appraisal.root.gemfile' }}
111
+ strategy:
112
+ fail-fast: true
113
+ matrix:
114
+ include:
115
+ - ruby: "truffleruby"
116
+ appraisal: "dep-heads"
117
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
118
+ # Run directly from the generated appraisal Gemfile so setup-ruby
119
+ # does not bootstrap Appraisal.root.gemfile against dependency
120
+ # sources before this dep-heads appraisal is selected.
121
+ # This makes gemfiles/dep_heads.gemfile required checked-in output
122
+ # for repositories using this generated workflow.
123
+ bundle_gemfile: "gemfiles/dep_heads.gemfile"
124
+ direct_bundle: true
125
+ rubygems: latest
126
+ bundler: latest
127
+
128
+ steps:
129
+ - name: Checkout
130
+ if: ${{ !env.ACT }}
131
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
132
+ with:
133
+ persist-credentials: false
134
+
135
+ - name: Setup Ruby & RubyGems
136
+ if: ${{ !env.ACT }}
137
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
138
+ with:
139
+ ruby-version: ${{ matrix.ruby }}
140
+ rubygems: ${{ matrix.rubygems }}
141
+ bundler: ${{ matrix.bundler }}
142
+ bundler-cache: ${{ matrix.ruby != 'jruby' }}
143
+ manual-compatibility-bundle: true
144
+ gem-install-retries: 7
145
+ # Direct appraisal Gemfiles can contain Bundler GIT/PATH lockfile
146
+ # sections that rv clean-install does not currently parse.
147
+ use-setup-ruby: "3.2 3.3 3.4 4.0"
148
+
149
+ - name: Prepare engine-specific lockfile
150
+ if: ${{ !env.ACT && matrix.ruby == 'jruby' }}
151
+ run: |
152
+ BUNDLE_LOCKFILE="${RUNNER_TEMP}/kettle-jem-lockfiles/${{ matrix.appraisal }}-${{ matrix.ruby }}.lock"
153
+ echo "BUNDLE_LOCKFILE=${BUNDLE_LOCKFILE}" >> "$GITHUB_ENV"
154
+ mkdir -p "$(dirname "$BUNDLE_LOCKFILE")"
155
+ if [ "${{ matrix.ruby }}" = "jruby" ]; then
156
+ bundle lock --lockfile="$BUNDLE_LOCKFILE" --add-platform=universal-java --update
157
+ fi
158
+
159
+ - name: Bundle install
160
+ if: ${{ !env.ACT && matrix.ruby == 'jruby' }}
161
+ run: bundle install --jobs 4
162
+
163
+ - name: Restore RSpec status log
164
+ if: "${{!env.ACT}}"
165
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
166
+ with:
167
+ path: .rspec_status
168
+ key: rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
169
+ restore-keys: |
170
+ rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
171
+ rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-
172
+
173
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
174
+ if: ${{ !env.ACT }}
175
+ run: bundle exec ${{ matrix.exec_cmd }}
176
+
177
+ jruby:
178
+ if: "(github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))) && (github.event_name != 'pull_request' || startsWith(github.head_ref, 'engines/') || startsWith(github.head_ref, 'jruby/') || startsWith(github.head_ref, 'feature/release'))"
179
+ name: Specs jruby@dep-heads
180
+ runs-on: ubuntu-latest
181
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
182
+ env:
183
+ BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle_gemfile || 'Appraisal.root.gemfile' }}
184
+ strategy:
185
+ fail-fast: true
186
+ matrix:
187
+ include:
188
+ - ruby: "jruby"
189
+ appraisal: "dep-heads"
190
+ exec_cmd: "{KJ|CI:EXEC_CMD}"
191
+ # Run directly from the generated appraisal Gemfile so setup-ruby
192
+ # does not bootstrap Appraisal.root.gemfile against dependency
193
+ # sources before this dep-heads appraisal is selected.
194
+ # This makes gemfiles/dep_heads.gemfile required checked-in output
195
+ # for repositories using this generated workflow.
196
+ bundle_gemfile: "gemfiles/dep_heads.gemfile"
197
+ direct_bundle: true
198
+ rubygems: default
199
+ bundler: default
200
+ experimental: true
201
+
202
+ steps:
203
+ - name: Checkout
204
+ if: ${{ !env.ACT }}
205
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
206
+ with:
207
+ persist-credentials: false
208
+
209
+ - name: Setup Ruby & RubyGems
210
+ if: ${{ !env.ACT }}
211
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
212
+ with:
213
+ ruby-version: ${{ matrix.ruby }}
214
+ rubygems: ${{ matrix.rubygems }}
215
+ bundler: ${{ matrix.bundler }}
216
+ bundler-cache: ${{ matrix.ruby != 'jruby' }}
217
+ manual-compatibility-bundle: true
218
+ gem-install-retries: 7
219
+ # Direct appraisal Gemfiles can contain Bundler GIT/PATH lockfile
220
+ # sections that rv clean-install does not currently parse.
221
+ use-setup-ruby: "3.2 3.3 3.4 4.0"
222
+
223
+ - name: Prepare engine-specific lockfile
224
+ if: ${{ !env.ACT && matrix.ruby == 'jruby' }}
225
+ run: |
226
+ BUNDLE_LOCKFILE="${RUNNER_TEMP}/kettle-jem-lockfiles/${{ matrix.appraisal }}-${{ matrix.ruby }}.lock"
227
+ echo "BUNDLE_LOCKFILE=${BUNDLE_LOCKFILE}" >> "$GITHUB_ENV"
228
+ mkdir -p "$(dirname "$BUNDLE_LOCKFILE")"
229
+ if [ "${{ matrix.ruby }}" = "jruby" ]; then
230
+ bundle lock --lockfile="$BUNDLE_LOCKFILE" --add-platform=universal-java --update
231
+ fi
232
+
233
+ - name: Bundle install
234
+ if: ${{ !env.ACT && matrix.ruby == 'jruby' }}
235
+ run: bundle install --jobs 4
236
+
237
+ - name: Restore RSpec status log
238
+ if: "${{!env.ACT}}"
239
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
240
+ with:
241
+ path: .rspec_status
242
+ key: rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
243
+ restore-keys: |
244
+ rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
245
+ rspec-status-dep-heads-${{matrix.ruby}}-${{matrix.appraisal}}-
246
+
247
+ - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
248
+ if: ${{ !env.ACT }}
249
+ run: bundle exec ${{ matrix.exec_cmd }}
@@ -0,0 +1,22 @@
1
+ # Dependency Review Action
2
+ #
3
+ # This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging.
4
+ #
5
+ # Source repository: https://github.com/actions/dependency-review-action
6
+ # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
7
+ name: 'Dependency Review'
8
+ on: [pull_request]
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ dependency-review:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - name: 'Checkout Repository'
18
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
19
+ with:
20
+ persist-credentials: false
21
+ - name: 'Dependency Review'
22
+ uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0
@@ -0,0 +1,39 @@
1
+ name: Discord Notify
2
+
3
+ on:
4
+ check_run:
5
+ types: [completed]
6
+ discussion:
7
+ types: [ created ]
8
+ discussion_comment:
9
+ types: [ created ]
10
+ fork:
11
+ gollum:
12
+ issues:
13
+ types: [ opened ]
14
+ issue_comment:
15
+ types: [ created ]
16
+ pull_request:
17
+ types: [ opened, reopened, closed ]
18
+ release:
19
+ types: [ published ]
20
+ watch:
21
+ types: [ started ]
22
+
23
+ # A workflow run is made up of one or more jobs that can run sequentially or in parallel
24
+ jobs:
25
+ # This workflow contains a single job called "build"
26
+ notify:
27
+ if: false
28
+ # The type of runner that the job will run on
29
+ runs-on: ubuntu-latest
30
+
31
+ # Steps represent a sequence of tasks that will be executed as part of the job
32
+ steps:
33
+ - name: Actions Status Discord
34
+ uses: sarisia/actions-status-discord@eb045afee445dc055c18d3d90bd0f244fd062708 # v1.16.0
35
+ if: always()
36
+ with:
37
+ webhook: ${{ secrets.DISCORD_WEBHOOK }}
38
+ status: ${{ job.status }}
39
+ username: GitHub Actions
@@ -0,0 +1,81 @@
1
+ # Framework matrix CI workflow template.
2
+ # Generated by kettle-jem when workflows.preset is "framework".
3
+ # The matrix entries are populated from .kettle-jem.yml framework_matrix config.
4
+ name: Framework CI
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ env:
10
+ K_SOUP_COV_DO: false
11
+
12
+ on:
13
+ push:
14
+ branches:
15
+ - 'main'
16
+ - '*-stable'
17
+ tags:
18
+ - '!*' # Do not execute on tags
19
+ pull_request:
20
+ branches:
21
+ - '*'
22
+ # Allow manually triggering the workflow.
23
+ workflow_dispatch:
24
+
25
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
26
+ concurrency:
27
+ # The concurrency group contains the workflow name and the branch name.
28
+ group: "${{ github.workflow }}-${{ github.ref }}"
29
+ cancel-in-progress: true
30
+
31
+ jobs:
32
+ test:
33
+ if: "github.event_name != 'push' || (!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]'))"
34
+ name: Specs ${{ matrix.ruby }}@${{ matrix.framework_version }}
35
+ runs-on: ubuntu-latest
36
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
37
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
38
+ BUNDLE_GEMFILE: ${{ github.workspace }}/Appraisal.root.gemfile
39
+ strategy:
40
+ fail-fast: false
41
+ matrix:
42
+ ruby:
43
+ - "3.1"
44
+ - "3.2"
45
+ - "3.3"
46
+ - "3.4"
47
+ framework_version: []
48
+ gemfile: []
49
+ rubygems:
50
+ - default
51
+ bundler:
52
+ - default
53
+
54
+ steps:
55
+ - name: Checkout
56
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
57
+ with:
58
+ persist-credentials: false
59
+
60
+ - name: Setup Ruby & RubyGems
61
+ uses: appraisal-rb/setup-ruby-flash@925395edf973d2dc0a629919f407f3547a03d4b5 # v2.1 compatibility bundle installation
62
+ with:
63
+ ruby-version: "${{ matrix.ruby }}"
64
+ rubygems: "${{ matrix.rubygems }}"
65
+ bundler: "${{ matrix.bundler }}"
66
+ bundler-cache: true
67
+ manual-compatibility-bundle: true
68
+ gem-install-retries: 7
69
+
70
+ - name: Restore RSpec status log
71
+ if: "${{!env.ACT}}"
72
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
73
+ with:
74
+ path: .rspec_status
75
+ key: rspec-status-framework-ci-${{matrix.ruby}}-${{matrix.framework_version}}-${{matrix.gemfile}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-${{github.run_id}}-${{github.run_attempt}}
76
+ restore-keys: |
77
+ rspec-status-framework-ci-${{matrix.ruby}}-${{matrix.framework_version}}-${{matrix.gemfile}}-${{hashFiles('**/Gemfile.lock','Appraisal.root.gemfile','gemfiles/**/*.gemfile')}}-
78
+ rspec-status-framework-ci-${{matrix.ruby}}-${{matrix.framework_version}}-${{matrix.gemfile}}-
79
+
80
+ - name: Tests for ${{ matrix.ruby }}@${{ matrix.framework_version }}
81
+ run: bundle exec {KJ|CI:EXEC_CMD}