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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +1505 -0
- data/LICENSE.md +13 -0
- data/README.md +794 -0
- data/exe/kettle-jem +20 -0
- data/lib/kettle/jem/cli.rb +334 -0
- data/lib/kettle/jem/license_txt_migrator.rb +33 -0
- data/lib/kettle/jem/rakelib/install.rake +10 -0
- data/lib/kettle/jem/rakelib/prepare.rake +10 -0
- data/lib/kettle/jem/rakelib/selftest.rake +10 -0
- data/lib/kettle/jem/rakelib/template.rake +10 -0
- data/lib/kettle/jem/tasks/install_task.rb +2178 -0
- data/lib/kettle/jem/tasks/prepare_task.rb +274 -0
- data/lib/kettle/jem/tasks/self_test_task.rb +256 -0
- data/lib/kettle/jem/tasks/template_task.rb +124 -0
- data/lib/kettle/jem/tasks.rb +6 -0
- data/lib/kettle/jem/templates/.aiignore.example +19 -0
- data/lib/kettle/jem/templates/.config/mise/env.sh +26 -0
- data/lib/kettle/jem/templates/.devcontainer/apt-install/devcontainer-feature.json.example +9 -0
- data/lib/kettle/jem/templates/.devcontainer/apt-install/install.sh.example +19 -0
- data/lib/kettle/jem/templates/.devcontainer/devcontainer.json.example +27 -0
- data/lib/kettle/jem/templates/.devcontainer/scripts/setup-tree-sitter.sh.example +210 -0
- data/lib/kettle/jem/templates/.env.local.example +67 -0
- data/lib/kettle/jem/templates/.envrc.example +4 -0
- data/lib/kettle/jem/templates/.envrc.no-osc.example +4 -0
- data/lib/kettle/jem/templates/.gemrc.example +1 -0
- data/lib/kettle/jem/templates/.git-hooks/commit-msg.example +60 -0
- data/lib/kettle/jem/templates/.git-hooks/commit-subjects-goalie.txt.example +8 -0
- data/lib/kettle/jem/templates/.git-hooks/footer-template.erb.txt.example +16 -0
- data/lib/kettle/jem/templates/.git-hooks/prepare-commit-msg.example +9 -0
- data/lib/kettle/jem/templates/.github/.codecov.yml.example +14 -0
- data/lib/kettle/jem/templates/.github/FUNDING.yml.example +10 -0
- data/lib/kettle/jem/templates/.github/FUNDING.yml.no-osc.example +10 -0
- data/lib/kettle/jem/templates/.github/copilot_instructions.md.example +1 -0
- data/lib/kettle/jem/templates/.github/dependabot.yml.example +13 -0
- data/lib/kettle/jem/templates/.github/workflows/auto-assign.yml.example +21 -0
- data/lib/kettle/jem/templates/.github/workflows/coverage.yml.example +102 -0
- data/lib/kettle/jem/templates/.github/workflows/current.yml.example +86 -0
- data/lib/kettle/jem/templates/.github/workflows/dep-heads.yml.example +249 -0
- data/lib/kettle/jem/templates/.github/workflows/dependency-review.yml.example +22 -0
- data/lib/kettle/jem/templates/.github/workflows/discord-notifier.yml.example +39 -0
- data/lib/kettle/jem/templates/.github/workflows/framework-ci.yml.example +81 -0
- data/lib/kettle/jem/templates/.github/workflows/heads.yml.example +212 -0
- data/lib/kettle/jem/templates/.github/workflows/jruby-10.0.yml.example +91 -0
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.1.yml.example +90 -0
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.2.yml.example +95 -0
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.3.yml.example +95 -0
- data/lib/kettle/jem/templates/.github/workflows/jruby-9.4.yml.example +95 -0
- data/lib/kettle/jem/templates/.github/workflows/jruby.yml.example +91 -0
- data/lib/kettle/jem/templates/.github/workflows/license-eye.yml.example +43 -0
- data/lib/kettle/jem/templates/.github/workflows/locked_deps.yml.example +89 -0
- data/lib/kettle/jem/templates/.github/workflows/opencollective.yml.example +44 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.3.yml.example +80 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.4.yml.example +84 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.5.yml.example +84 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.6.yml.example +84 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-2.7.yml.example +84 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.0.yml.example +85 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.1.yml.example +83 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.2.yml.example +80 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.3.yml.example +80 -0
- data/lib/kettle/jem/templates/.github/workflows/ruby-3.4.yml.example +80 -0
- data/lib/kettle/jem/templates/.github/workflows/style.yml.example +78 -0
- data/lib/kettle/jem/templates/.github/workflows/templating.yml.example +86 -0
- data/lib/kettle/jem/templates/.github/workflows/truffle.yml.example +91 -0
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-22.3.yml.example +92 -0
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-23.0.yml.example +92 -0
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-23.1.yml.example +78 -0
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-24.2.yml.example +91 -0
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-25.0.yml.example +96 -0
- data/lib/kettle/jem/templates/.github/workflows/truffleruby-33.0.yml.example +91 -0
- data/lib/kettle/jem/templates/.github/workflows/unlocked_deps.yml.example +93 -0
- data/lib/kettle/jem/templates/.gitignore.example +53 -0
- data/lib/kettle/jem/templates/.gitlab-ci.yml.example +134 -0
- data/lib/kettle/jem/templates/.idea/.gitignore.example +44 -0
- data/lib/kettle/jem/templates/.licenserc.yaml.example +8 -0
- data/lib/kettle/jem/templates/.opencollective.yml.example +3 -0
- data/lib/kettle/jem/templates/.qlty/qlty.toml.example +79 -0
- data/lib/kettle/jem/templates/.rspec.example +10 -0
- data/lib/kettle/jem/templates/.rubocop.example +1 -0
- data/lib/kettle/jem/templates/.rubocop.yml.example +47 -0
- data/lib/kettle/jem/templates/.rubocop_rspec.yml.example +55 -0
- data/lib/kettle/jem/templates/.simplecov.example +18 -0
- data/lib/kettle/jem/templates/.structuredmerge/git-drivers.toml.example +86 -0
- data/lib/kettle/jem/templates/.structuredmerge/kettle-jem.yml.example +519 -0
- data/lib/kettle/jem/templates/.yard-lint.yml.example +54 -0
- data/lib/kettle/jem/templates/.yardignore.example +13 -0
- data/lib/kettle/jem/templates/.yardopts.example +14 -0
- data/lib/kettle/jem/templates/AGENTS.md.example +283 -0
- data/lib/kettle/jem/templates/AGPL-3.0-only.md.example +235 -0
- data/lib/kettle/jem/templates/Appraisal.root.gemfile.example +26 -0
- data/lib/kettle/jem/templates/Appraisals.example +150 -0
- data/lib/kettle/jem/templates/Big-Time-Public-License.md.example +99 -0
- data/lib/kettle/jem/templates/CHANGELOG.md.example +33 -0
- data/lib/kettle/jem/templates/CHANGELOG.transfer.md +109 -0
- data/lib/kettle/jem/templates/CITATION.cff.example +20 -0
- data/lib/kettle/jem/templates/CODE_OF_CONDUCT.md.example +134 -0
- data/lib/kettle/jem/templates/CONTRIBUTING.md.example +292 -0
- data/lib/kettle/jem/templates/FUNDING.md.example +74 -0
- data/lib/kettle/jem/templates/FUNDING.md.no-osc.example +63 -0
- data/lib/kettle/jem/templates/Gemfile.example +52 -0
- data/lib/kettle/jem/templates/IRP.md.example +34 -0
- data/lib/kettle/jem/templates/LICENSE.md.example +3 -0
- data/lib/kettle/jem/templates/MIT.md.example +21 -0
- data/lib/kettle/jem/templates/PolyForm-Noncommercial-1.0.0.md.example +131 -0
- data/lib/kettle/jem/templates/PolyForm-Small-Business-1.0.0.md.example +121 -0
- data/lib/kettle/jem/templates/README.md.example +544 -0
- data/lib/kettle/jem/templates/REEK +0 -0
- data/lib/kettle/jem/templates/RUBOCOP.md.example +78 -0
- data/lib/kettle/jem/templates/Rakefile.example +163 -0
- data/lib/kettle/jem/templates/SECURITY.md.example +21 -0
- data/lib/kettle/jem/templates/bin/setup.example +36 -0
- data/lib/kettle/jem/templates/certs/pboling.pem.example +27 -0
- data/lib/kettle/jem/templates/gem.gemspec.example +161 -0
- data/lib/kettle/jem/templates/gemfiles/modular/benchmark/r4/v0.5.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/benchmark/vHEAD.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/cgi/r4/v0.5.gemfile.example +1 -0
- data/lib/kettle/jem/templates/gemfiles/modular/cgi/vHEAD.gemfile.example +1 -0
- data/lib/kettle/jem/templates/gemfiles/modular/changelog.gemfile.example +6 -0
- data/lib/kettle/jem/templates/gemfiles/modular/coverage.gemfile.example +14 -0
- data/lib/kettle/jem/templates/gemfiles/modular/coverage_local.gemfile.example +34 -0
- data/lib/kettle/jem/templates/gemfiles/modular/debug.gemfile.example +22 -0
- data/lib/kettle/jem/templates/gemfiles/modular/documentation.gemfile.example +24 -0
- data/lib/kettle/jem/templates/gemfiles/modular/documentation_local.gemfile.example +20 -0
- data/lib/kettle/jem/templates/gemfiles/modular/erb/r2/v3.0.gemfile.example +1 -0
- data/lib/kettle/jem/templates/gemfiles/modular/erb/r2.3/default.gemfile.example +6 -0
- data/lib/kettle/jem/templates/gemfiles/modular/erb/r2.6/v2.2.gemfile.example +3 -0
- data/lib/kettle/jem/templates/gemfiles/modular/erb/r3/v5.0.gemfile.example +1 -0
- data/lib/kettle/jem/templates/gemfiles/modular/erb/r3.1/v4.0.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/erb/r4/v5.0.gemfile.example +1 -0
- data/lib/kettle/jem/templates/gemfiles/modular/erb/vHEAD.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_22_3.gemfile.example +6 -0
- data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_23_0.gemfile.example +6 -0
- data/lib/kettle/jem/templates/gemfiles/modular/json/truffleruby_23_1.gemfile.example +6 -0
- data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r2/v0.3.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile.example +3 -0
- data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r3/v0.3.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/r4/v0.3.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/mutex_m/vHEAD.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/optional.gemfile.example +16 -0
- data/lib/kettle/jem/templates/gemfiles/modular/recording/r2.3/recording.gemfile.example +16 -0
- data/lib/kettle/jem/templates/gemfiles/modular/recording/r2.4/recording.gemfile.example +18 -0
- data/lib/kettle/jem/templates/gemfiles/modular/recording/r2.5/recording.gemfile.example +16 -0
- data/lib/kettle/jem/templates/gemfiles/modular/recording/r3/recording.gemfile.example +16 -0
- data/lib/kettle/jem/templates/gemfiles/modular/recording/r4/recording.gemfile.example +16 -0
- data/lib/kettle/jem/templates/gemfiles/modular/recording/vHEAD.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/rspec.gemfile.example +4 -0
- data/lib/kettle/jem/templates/gemfiles/modular/runtime_heads.gemfile.example +14 -0
- data/lib/kettle/jem/templates/gemfiles/modular/shunted.gemfile.example +21 -0
- data/lib/kettle/jem/templates/gemfiles/modular/stringio/r2/v3.0.gemfile.example +5 -0
- data/lib/kettle/jem/templates/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile.example +4 -0
- data/lib/kettle/jem/templates/gemfiles/modular/stringio/r3/v3.0.gemfile.example +5 -0
- data/lib/kettle/jem/templates/gemfiles/modular/stringio/r4/v3.0.gemfile.example +5 -0
- data/lib/kettle/jem/templates/gemfiles/modular/stringio/vHEAD.gemfile.example +2 -0
- data/lib/kettle/jem/templates/gemfiles/modular/style.gemfile.example +33 -0
- data/lib/kettle/jem/templates/gemfiles/modular/style_local.gemfile.example +26 -0
- data/lib/kettle/jem/templates/gemfiles/modular/templating.gemfile.example +34 -0
- data/lib/kettle/jem/templates/gemfiles/modular/templating_local.gemfile.example +73 -0
- data/lib/kettle/jem/templates/gemfiles/modular/webrick/r4/v1.9.gemfile.example +1 -0
- data/lib/kettle/jem/templates/gemfiles/modular/webrick/vHEAD.gemfile.example +1 -0
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2/libs.gemfile.example +3 -0
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2.3/libs.gemfile.example +3 -0
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2.4/libs.gemfile.example +3 -0
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r2.6/libs.gemfile.example +3 -0
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r3/libs.gemfile.example +3 -0
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r3.1/libs.gemfile.example +5 -0
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/r4/libs.gemfile.example +6 -0
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs/vHEAD.gemfile.example +6 -0
- data/lib/kettle/jem/templates/gemfiles/modular/x_std_libs.gemfile.example +12 -0
- data/lib/kettle/jem/templates/lib/gem/version.rb.example +1 -0
- data/lib/kettle/jem/templates/lib/gem/version_gem.rb.example +1 -0
- data/lib/kettle/jem/templates/mise.toml.example +25 -0
- data/lib/kettle/jem/templates/mise.toml.no-osc.example +25 -0
- data/lib/kettle/jem/templates/parsers.toml.example +19 -0
- data/lib/kettle/jem/templates/readme/partials/basic_usage.md.example +28 -0
- data/lib/kettle/jem/templates/readme/partials/configuration.md.example +112 -0
- data/lib/kettle/jem/templates/readme/partials/synopsis.md.example +3 -0
- data/lib/kettle/jem/templates/shim/.github/workflows/current.yml.example +40 -0
- data/lib/kettle/jem/templates/shim/.rspec.example +5 -0
- data/lib/kettle/jem/templates/shim/.structuredmerge/kettle-jem.yml.example +28 -0
- data/lib/kettle/jem/templates/shim/CHANGELOG.md.example +9 -0
- data/lib/kettle/jem/templates/shim/Gemfile.example +14 -0
- data/lib/kettle/jem/templates/shim/README.md.example +25 -0
- data/lib/kettle/jem/templates/shim/Rakefile.example +8 -0
- data/lib/kettle/jem/templates/shim/gem.gemspec.example +45 -0
- data/lib/kettle/jem/templates/shim/lib/compat_require.rb.example +3 -0
- data/lib/kettle/jem/templates/shim/lib/entrypoint.rb.example +3 -0
- data/lib/kettle/jem/templates/shim/lib/version.rb.example +1 -0
- data/lib/kettle/jem/templates/shim/spec/shim_spec.rb.example +15 -0
- data/lib/kettle/jem/templates/shim/spec/spec_helper.rb.example +23 -0
- data/lib/kettle/jem/templates/sig/gem.rbs.example +1 -0
- data/lib/kettle/jem/templates/spec/README.md.example +28 -0
- data/lib/kettle/jem/templates/spec/spec_helper.rb.example +39 -0
- data/lib/kettle/jem/version.rb +5 -3
- data/lib/kettle/jem/version_gem.rb +8 -0
- data/lib/kettle/jem.rb +18540 -1517
- data/lib/kettle-jem.rb +2 -1
- data/sig/kettle/jem.rbs +8 -0
- data.tar.gz.sig +0 -0
- metadata +870 -32
- metadata.gz.sig +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# HTTP recording for deterministic specs
|
|
2
|
+
# It seems that somehow just having a newer version of appraisal installed breaks
|
|
3
|
+
# Ruby 2.3 and 2.4 even if their bundle specifies an older version,
|
|
4
|
+
# and as a result it can only be a dependency in the appraisals.
|
|
5
|
+
# Putting it here in recording.gemfile will satisfy the rubies that can load latest vcr.
|
|
6
|
+
# | An error occurred while loading spec_helper.
|
|
7
|
+
# | Failure/Error: require "vcr"
|
|
8
|
+
# |
|
|
9
|
+
# | NoMethodError:
|
|
10
|
+
# | undefined method `delete_prefix' for "CONTENT_LENGTH":String
|
|
11
|
+
# | # ./spec/config/vcr.rb:3:in `require'
|
|
12
|
+
# | # ./spec/config/vcr.rb:3:in `<top (required)>'
|
|
13
|
+
# | # ./spec/spec_helper.rb:8:in `require_relative'
|
|
14
|
+
# | # ./spec/spec_helper.rb:8:in `<top (required)>'
|
|
15
|
+
gem "vcr", "< 6" # 6.0.0 appears to have been released accidentally without changing required_ruby_version in the gemspec.
|
|
16
|
+
gem "webmock", "~> 3.0" # Last version to support ruby >= 2.3
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# HTTP recording for deterministic specs
|
|
2
|
+
# It seems that somehow just having a newer version of appraisal installed breaks
|
|
3
|
+
# Ruby 2.3 and 2.4 even if their bundle specifies an older version,
|
|
4
|
+
# and as a result it can only be a dependency in the appraisals.
|
|
5
|
+
# Putting it here in recording.gemfile will satisfy the rubies that can load latest vcr.
|
|
6
|
+
# | An error occurred while loading spec_helper.
|
|
7
|
+
# | Failure/Error: require "vcr"
|
|
8
|
+
# |
|
|
9
|
+
# | NoMethodError:
|
|
10
|
+
# | undefined method `delete_prefix' for "CONTENT_LENGTH":String
|
|
11
|
+
# | # ./spec/config/vcr.rb:3:in `require'
|
|
12
|
+
# | # ./spec/config/vcr.rb:3:in `<top (required)>'
|
|
13
|
+
# | # ./spec/spec_helper.rb:8:in `require_relative'
|
|
14
|
+
# | # ./spec/spec_helper.rb:8:in `<top (required)>'
|
|
15
|
+
gem "vcr", "< 4"
|
|
16
|
+
gem "webmock", ">= 3"
|
|
17
|
+
|
|
18
|
+
# For now turning off Ruby 2.4 testing.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# HTTP recording for deterministic specs
|
|
2
|
+
# It seems that somehow just having a newer version of appraisal installed breaks
|
|
3
|
+
# Ruby 2.3 and 2.4 even if their bundle specifies an older version,
|
|
4
|
+
# and as a result it can only be a dependency in the appraisals.
|
|
5
|
+
# Putting it here in recording.gemfile will satisfy the rubies that can load latest vcr.
|
|
6
|
+
# | An error occurred while loading spec_helper.
|
|
7
|
+
# | Failure/Error: require "vcr"
|
|
8
|
+
# |
|
|
9
|
+
# | NoMethodError:
|
|
10
|
+
# | undefined method `delete_prefix' for "CONTENT_LENGTH":String
|
|
11
|
+
# | # ./spec/config/vcr.rb:3:in `require'
|
|
12
|
+
# | # ./spec/config/vcr.rb:3:in `<top (required)>'
|
|
13
|
+
# | # ./spec/spec_helper.rb:8:in `require_relative'
|
|
14
|
+
# | # ./spec/spec_helper.rb:8:in `<top (required)>'
|
|
15
|
+
gem "vcr", ">= 6"
|
|
16
|
+
gem "webmock", ">= 3"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# HTTP recording for deterministic specs
|
|
2
|
+
# It seems that somehow just having a newer version of appraisal installed breaks
|
|
3
|
+
# Ruby 2.3 and 2.4 even if their bundle specifies an older version,
|
|
4
|
+
# and as a result it can only be a dependency in the appraisals.
|
|
5
|
+
# Putting it here in recording.gemfile will satisfy the rubies that can load latest vcr.
|
|
6
|
+
# | An error occurred while loading spec_helper.
|
|
7
|
+
# | Failure/Error: require "vcr"
|
|
8
|
+
# |
|
|
9
|
+
# | NoMethodError:
|
|
10
|
+
# | undefined method `delete_prefix' for "CONTENT_LENGTH":String
|
|
11
|
+
# | # ./spec/config/vcr.rb:3:in `require'
|
|
12
|
+
# | # ./spec/config/vcr.rb:3:in `<top (required)>'
|
|
13
|
+
# | # ./spec/spec_helper.rb:8:in `require_relative'
|
|
14
|
+
# | # ./spec/spec_helper.rb:8:in `<top (required)>'
|
|
15
|
+
gem "vcr", ">= 6"
|
|
16
|
+
gem "webmock", ">= 3"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# HTTP recording for deterministic specs
|
|
2
|
+
# It seems that somehow just having a newer version of appraisal installed breaks
|
|
3
|
+
# Ruby 2.3 and 2.4 even if their bundle specifies an older version,
|
|
4
|
+
# and as a result it can only be a dependency in the appraisals.
|
|
5
|
+
# Putting it here in recording.gemfile will satisfy the rubies that can load latest vcr.
|
|
6
|
+
# | An error occurred while loading spec_helper.
|
|
7
|
+
# | Failure/Error: require "vcr"
|
|
8
|
+
# |
|
|
9
|
+
# | NoMethodError:
|
|
10
|
+
# | undefined method `delete_prefix' for "CONTENT_LENGTH":String
|
|
11
|
+
# | # ./spec/config/vcr.rb:3:in `require'
|
|
12
|
+
# | # ./spec/config/vcr.rb:3:in `<top (required)>'
|
|
13
|
+
# | # ./spec/spec_helper.rb:8:in `require_relative'
|
|
14
|
+
# | # ./spec/spec_helper.rb:8:in `<top (required)>'
|
|
15
|
+
gem "vcr", ">= 6"
|
|
16
|
+
gem "webmock", ">= 3"
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
# Test against HEAD of runtime dependencies so we can proactively file bugs
|
|
10
|
+
|
|
11
|
+
# Ruby >= 2.2
|
|
12
|
+
gem "version_gem", github: "ruby-oauth/version_gem", branch: "main"
|
|
13
|
+
|
|
14
|
+
eval_gemfile("x_std_libs/vHEAD.gemfile")
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
# Shunted development dependencies.
|
|
10
|
+
#
|
|
11
|
+
# These gems have been moved here from the gemspec because they require a
|
|
12
|
+
# newer Ruby than the project's effective test/development floor:
|
|
13
|
+
#
|
|
14
|
+
# effective_test_floor = max(gemspec required_ruby_version, ruby.test_minimum)
|
|
15
|
+
#
|
|
16
|
+
# They are loaded via the Appraisals "unlocked" group so that CI can still
|
|
17
|
+
# test them on the Rubies they support, while older-Ruby CI jobs simply
|
|
18
|
+
# skip this gemfile.
|
|
19
|
+
#
|
|
20
|
+
# This file is regenerated by `rake template` — add custom gems inside a
|
|
21
|
+
# kettle-jem:freeze / kettle-jem:unfreeze block to preserve them.
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
# Style tasks run on the latest Ruby; RuboCop-LTS selects the compatibility
|
|
10
|
+
# rules for the configured Ruby floor independently from task dependency floors.
|
|
11
|
+
|
|
12
|
+
gem "reek", "~> 6.5", ">= 6.5.0"
|
|
13
|
+
|
|
14
|
+
platform :mri do
|
|
15
|
+
gem "appraisal2-rubocop", "~> 1.0", ">= 1.0.1", require: false
|
|
16
|
+
gem "rubocop-gradual", "~> 0.4", ">= 0.4.0"
|
|
17
|
+
gem "rubocop-minitest", "~> 0.40", ">= 0.40.0"
|
|
18
|
+
gem "rubocop-on-rbs", "~> 2.0", ">= 2.0.0" # ruby >= 3.2.0
|
|
19
|
+
# gem "rubocop", "~> 1.73", ">= 1.73.2" # constrained by standard
|
|
20
|
+
gem "rubocop-packaging",
|
|
21
|
+
github: "pboling/rubocop-packaging",
|
|
22
|
+
ref: "3539ba858d379740d638566faee9e56b2b854145"
|
|
23
|
+
gem "standard", "~> 1.56", ">= 1.56.0"
|
|
24
|
+
|
|
25
|
+
if ENV.fetch("RUBOCOP_LTS_LOCAL", "false").casecmp("false").zero?
|
|
26
|
+
declared_gems = instance_variable_get(:@dependencies).to_a.map(&:name)
|
|
27
|
+
gem "rubocop-lts", {KJ|RUBOCOP_LTS_CONSTRAINT} unless declared_gems.include?("rubocop-lts")
|
|
28
|
+
gem "rubocop-lts-rspec", "~> 1.0", ">= 1.0.5" unless declared_gems.include?("rubocop-lts-rspec")
|
|
29
|
+
gem "{KJ|RUBOCOP_RUBY_GEM}", {KJ|RUBOCOP_RUBY_CONSTRAINT} unless declared_gems.include?("{KJ|RUBOCOP_RUBY_GEM}")
|
|
30
|
+
else
|
|
31
|
+
eval_gemfile("style_local.gemfile")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Style tasks run on the latest Ruby; RuboCop-LTS selects the compatibility
|
|
4
|
+
# rules for the configured Ruby floor independently from task dependency floors.
|
|
5
|
+
|
|
6
|
+
# Local path overrides for development.
|
|
7
|
+
# Loaded by the associated non-local gemfile when RUBOCOP_LTS_LOCAL != "false".
|
|
8
|
+
|
|
9
|
+
{KJ|LOCAL_GEMFILE_NOMONO_BOOTSTRAP}
|
|
10
|
+
|
|
11
|
+
local_gems = %w[rubocop-lts rubocop-lts-rspec {KJ|RUBOCOP_RUBY_GEM} standard-rubocop-lts]
|
|
12
|
+
declared_gems = instance_variable_get(:@dependencies).to_a.map(&:name)
|
|
13
|
+
local_gems_to_eval = local_gems - %w[{KJ|PACKAGE_NAME}] - declared_gems
|
|
14
|
+
|
|
15
|
+
# export VENDORED_GEMS=rubocop-lts,rubocop-lts-rspec,{KJ|RUBOCOP_RUBY_GEM},standard-rubocop-lts
|
|
16
|
+
platform :mri do
|
|
17
|
+
eval_nomono_gems(
|
|
18
|
+
gems: local_gems_to_eval,
|
|
19
|
+
prefix: "RUBOCOP_LTS",
|
|
20
|
+
path_env: "RUBOCOP_LTS_LOCAL",
|
|
21
|
+
vendored_gems_env: "VENDORED_GEMS",
|
|
22
|
+
vendor_gem_dir_env: "VENDOR_GEM_DIR",
|
|
23
|
+
debug_env: "RUBOCOP_LTS_DEBUG",
|
|
24
|
+
root: ["src", "rubocop-lts"]
|
|
25
|
+
)
|
|
26
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
structuredmerge_remote = ENV.fetch("STRUCTUREDMERGE_DEV", "false").casecmp("false").zero?
|
|
4
|
+
kettle_remote = ENV.fetch("KETTLE_DEV_DEV", "false").casecmp("false").zero?
|
|
5
|
+
|
|
6
|
+
tslp_dev = ENV.fetch("TSLP_DEV", nil).to_s
|
|
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
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
if structuredmerge_remote
|
|
19
|
+
# Merge recipes for released installs.
|
|
20
|
+
gem "kettle-jem", ">= 7.0"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
if kettle_remote
|
|
24
|
+
# Template/plugin checks for released installs.
|
|
25
|
+
gem "kettle-drift", "~> 1.0", ">= 1.0.12", require: false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Set STRUCTUREDMERGE_DEV=/path/to/structuredmerge/ruby/gems for local development with path-based dependencies.
|
|
29
|
+
# When false (default / CI), released kettle-jem brings merge gems and parser dependencies.
|
|
30
|
+
# Local path overrides bring the same dependencies from sibling gemspecs.
|
|
31
|
+
#
|
|
32
|
+
# Set KETTLE_DEV_DEV=/path/to/my for local development with Kettle plugin gems.
|
|
33
|
+
# When false (default / CI), released Kettle plugin gems are used.
|
|
34
|
+
eval_gemfile "templating_local.gemfile" unless structuredmerge_remote && kettle_remote
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Local path overrides for templating development.
|
|
4
|
+
# Loaded by the associated non-local gemfile when STRUCTUREDMERGE_DEV or KETTLE_DEV_DEV
|
|
5
|
+
# is not "false".
|
|
6
|
+
|
|
7
|
+
{KJ|LOCAL_GEMFILE_NOMONO_BOOTSTRAP}
|
|
8
|
+
|
|
9
|
+
structuredmerge_local_gems = %w[
|
|
10
|
+
tree_haver
|
|
11
|
+
ast-merge
|
|
12
|
+
ast-merge-git
|
|
13
|
+
ast-template
|
|
14
|
+
bash-merge
|
|
15
|
+
binary-merge
|
|
16
|
+
commonmarker-merge
|
|
17
|
+
citrus-toml-merge
|
|
18
|
+
dotenv-merge
|
|
19
|
+
go-merge
|
|
20
|
+
html-merge
|
|
21
|
+
json-merge
|
|
22
|
+
kettle-jem
|
|
23
|
+
kramdown-merge
|
|
24
|
+
markdown-merge
|
|
25
|
+
markly-merge
|
|
26
|
+
parslet-toml-merge
|
|
27
|
+
plain-merge
|
|
28
|
+
prism-merge
|
|
29
|
+
psych-merge
|
|
30
|
+
rbs-merge
|
|
31
|
+
ruby-merge
|
|
32
|
+
rust-merge
|
|
33
|
+
smorg-rb
|
|
34
|
+
typescript-merge
|
|
35
|
+
toml-merge
|
|
36
|
+
yaml-merge
|
|
37
|
+
zip-merge
|
|
38
|
+
ast-crispr
|
|
39
|
+
ast-crispr-markdown-markly
|
|
40
|
+
ast-crispr-ruby-prism
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
kettle_dev_local_gems = %w[
|
|
44
|
+
{KJ|KETTLE_DEV_LOCAL_GEMS}
|
|
45
|
+
]
|
|
46
|
+
declared_gems = instance_variable_get(:@dependencies).to_a.map(&:name)
|
|
47
|
+
structuredmerge_local_gems_to_eval = structuredmerge_local_gems - %w[{KJ|PACKAGE_NAME}]
|
|
48
|
+
kettle_dev_local_gems_to_eval = kettle_dev_local_gems - %w[{KJ|PACKAGE_NAME}] - (declared_gems - %w[kettle-dev])
|
|
49
|
+
|
|
50
|
+
platform :mri do
|
|
51
|
+
if ENV.fetch("STRUCTUREDMERGE_DEV", "false").casecmp("false") != 0
|
|
52
|
+
eval_nomono_gems(
|
|
53
|
+
gems: structuredmerge_local_gems_to_eval,
|
|
54
|
+
prefix: "STRUCTUREDMERGE",
|
|
55
|
+
path_env: "STRUCTUREDMERGE_DEV",
|
|
56
|
+
vendored_gems_env: "VENDORED_GEMS",
|
|
57
|
+
vendor_gem_dir_env: "VENDOR_GEM_DIR",
|
|
58
|
+
debug_env: "STRUCTUREDMERGE_DEBUG"
|
|
59
|
+
)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
if ENV.fetch("KETTLE_DEV_DEV", "false").casecmp("false") != 0
|
|
63
|
+
eval_nomono_gems(
|
|
64
|
+
gems: kettle_dev_local_gems_to_eval,
|
|
65
|
+
prefix: "KETTLE_DEV",
|
|
66
|
+
path_env: "KETTLE_DEV_DEV",
|
|
67
|
+
vendored_gems_env: "VENDORED_GEMS",
|
|
68
|
+
vendor_gem_dir_env: "VENDOR_GEM_DIR",
|
|
69
|
+
debug_env: "KETTLE_DEV_DEBUG",
|
|
70
|
+
root: ["src", "my", "kettle-dev"]
|
|
71
|
+
)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
gem "webrick", "~> 1.9"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
gem "webrick", ">= 1.9"
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
eval_gemfile "../../erb/r4/v5.0.gemfile"
|
|
2
|
+
eval_gemfile "../../mutex_m/r4/v0.3.gemfile"
|
|
3
|
+
eval_gemfile "../../stringio/r4/v3.0.gemfile"
|
|
4
|
+
eval_gemfile "../../benchmark/r4/v0.5.gemfile"
|
|
5
|
+
eval_gemfile "../../cgi/r4/v0.5.gemfile"
|
|
6
|
+
eval_gemfile "../../webrick/r4/v1.9.gemfile"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
### Std Lib Extracted Gems
|
|
2
|
+
ruby_version = Gem::Version.new(RUBY_VERSION)
|
|
3
|
+
|
|
4
|
+
if ruby_version >= Gem::Version.new("4.0")
|
|
5
|
+
eval_gemfile "x_std_libs/r4/libs.gemfile"
|
|
6
|
+
elsif ruby_version >= Gem::Version.new("3.2")
|
|
7
|
+
eval_gemfile "x_std_libs/r3/libs.gemfile"
|
|
8
|
+
elsif ruby_version >= Gem::Version.new("3.1")
|
|
9
|
+
eval_gemfile "x_std_libs/r3.1/libs.gemfile"
|
|
10
|
+
else
|
|
11
|
+
eval_gemfile "x_std_libs/r2/libs.gemfile"
|
|
12
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{KJ|VERSION_GEM:VERSION_RB}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{KJ|VERSION_GEM:VERSION_GEM_RB}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Shared development environment for this gem.
|
|
2
|
+
# Local overrides belong in .env.local (loaded via dotenvy through mise).
|
|
3
|
+
|
|
4
|
+
[env]
|
|
5
|
+
FLOSS_CFG_FUND_DEBUG = "false"
|
|
6
|
+
FLOSS_CFG_FUND_LOGFILE = "tmp/log/debug.log"
|
|
7
|
+
FUNDING_ORG = "{KJ|OPENCOLLECTIVE_ORG}"
|
|
8
|
+
KETTLE_DEV_DEBUG = "false"
|
|
9
|
+
KETTLE_TEST_SILENT = "true"
|
|
10
|
+
K_SOUP_COV_COMMAND_NAME = "Test Coverage"
|
|
11
|
+
K_SOUP_COV_DO = "true"
|
|
12
|
+
K_SOUP_COV_FORMATTERS = "html,xml,rcov,lcov,json,tty"
|
|
13
|
+
K_SOUP_COV_MIN_BRANCH = "76"
|
|
14
|
+
K_SOUP_COV_MIN_HARD = "true"
|
|
15
|
+
K_SOUP_COV_MIN_LINE = "92"
|
|
16
|
+
K_SOUP_COV_MULTI_FORMATTERS = "true"
|
|
17
|
+
K_SOUP_COV_OPEN_BIN = ""
|
|
18
|
+
MAX_ROWS = "1"
|
|
19
|
+
OPENCOLLECTIVE_HANDLE = "{KJ|OPENCOLLECTIVE_ORG}"
|
|
20
|
+
_.file = { path = ".env.local", redact = true }
|
|
21
|
+
_.path = ["exe", "bin"]
|
|
22
|
+
_.source = ".config/mise/env.sh"
|
|
23
|
+
|
|
24
|
+
[tools]
|
|
25
|
+
ruby = "4.0.6"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Shared development environment for this gem.
|
|
2
|
+
# Local overrides belong in .env.local (loaded via dotenvy through mise).
|
|
3
|
+
|
|
4
|
+
[env]
|
|
5
|
+
FLOSS_CFG_FUND_DEBUG = "false"
|
|
6
|
+
FLOSS_CFG_FUND_LOGFILE = "tmp/log/debug.log"
|
|
7
|
+
FUNDING_ORG = "false"
|
|
8
|
+
KETTLE_DEV_DEBUG = "false"
|
|
9
|
+
KETTLE_TEST_SILENT = "true"
|
|
10
|
+
K_SOUP_COV_COMMAND_NAME = "Test Coverage"
|
|
11
|
+
K_SOUP_COV_DO = "true"
|
|
12
|
+
K_SOUP_COV_FORMATTERS = "html,xml,rcov,lcov,json,tty"
|
|
13
|
+
K_SOUP_COV_MIN_BRANCH = "76"
|
|
14
|
+
K_SOUP_COV_MIN_HARD = "true"
|
|
15
|
+
K_SOUP_COV_MIN_LINE = "92"
|
|
16
|
+
K_SOUP_COV_MULTI_FORMATTERS = "true"
|
|
17
|
+
K_SOUP_COV_OPEN_BIN = ""
|
|
18
|
+
MAX_ROWS = "1"
|
|
19
|
+
OPENCOLLECTIVE_HANDLE = "false"
|
|
20
|
+
_.file = { path = ".env.local", redact = true }
|
|
21
|
+
_.path = ["exe", "bin"]
|
|
22
|
+
_.source = ".config/mise/env.sh"
|
|
23
|
+
|
|
24
|
+
[tools]
|
|
25
|
+
ruby = "4.0.6"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# tsdl configuration — tree-sitter grammar versions
|
|
2
|
+
# https://github.com/stackmystack/tsdl
|
|
3
|
+
#
|
|
4
|
+
# Run: tsdl build --out-dir /usr/local/lib
|
|
5
|
+
# Or let .devcontainer/scripts/setup-tree-sitter.sh handle it.
|
|
6
|
+
|
|
7
|
+
out-dir = "/usr/local/lib"
|
|
8
|
+
|
|
9
|
+
[parsers]
|
|
10
|
+
json = "v0.24.8"
|
|
11
|
+
bash = "v0.25.1"
|
|
12
|
+
|
|
13
|
+
[parsers.toml]
|
|
14
|
+
ref = "v0.7.0"
|
|
15
|
+
from = "https://github.com/tree-sitter-grammars/tree-sitter-toml"
|
|
16
|
+
|
|
17
|
+
[parsers.rbs]
|
|
18
|
+
ref = "v0.2.2"
|
|
19
|
+
from = "https://github.com/joker1007/tree-sitter-rbs"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
```console
|
|
2
|
+
kettle-jem
|
|
3
|
+
K_JEM_TEMPLATING=true kettle-jem install
|
|
4
|
+
K_JEM_TEMPLATING=true kettle-jem selftest
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
`kettle-jem` setup creates or updates `.structuredmerge/kettle-jem.yml`,
|
|
8
|
+
installs template support, and runs the template workflow. `kettle-jem install`
|
|
9
|
+
reapplies full template updates and regenerates local finishing artifacts such
|
|
10
|
+
as binstubs.
|
|
11
|
+
Use `kettle-jem template --only PATH` for scoped file updates. `kettle-jem
|
|
12
|
+
selftest` checks template drift in a temporary workspace. The `kettle:jem:*`
|
|
13
|
+
rake tasks are internal targets used by the executable after it prepares the
|
|
14
|
+
templating environment.
|
|
15
|
+
|
|
16
|
+
Useful runtime controls:
|
|
17
|
+
|
|
18
|
+
| Setting | Use |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `KETTLE_JEM_VERBOSE=true` | Show detailed template output. |
|
|
21
|
+
| `PARSE_ERROR_MODE=fail` | Fail when an AST/parser-backed merge cannot run. |
|
|
22
|
+
| `PARSE_ERROR_MODE=skip` | Preserve the destination when parsing is unavailable. |
|
|
23
|
+
| `FAILURE_MODE=error` | Raise on merge failure. |
|
|
24
|
+
| `FAILURE_MODE=rescue` | Warn and keep unmerged content on merge failure. |
|
|
25
|
+
| `only=glob,glob` | Limit the template run to matching paths. |
|
|
26
|
+
| `include=glob,glob` | Add matching paths to the run. |
|
|
27
|
+
| `hook_templates=l|g|n` | Install local hooks, global hooks, or no hooks. |
|
|
28
|
+
| `git_drivers=semantic-diff|builtin-diff|global|include-file|check|undo|none` | Install, verify, remove, or skip StructuredMerge Git diff driver setup. |
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
`kettle-jem` reads `.structuredmerge/kettle-jem.yml` from the project root. When
|
|
2
|
+
only the legacy root `.kettle-jem.yml` exists, `kettle-jem install` migrates it
|
|
3
|
+
to the structured config directory. The config controls template sources, README
|
|
4
|
+
section partials, token values, merge defaults, per-file strategies, workflow
|
|
5
|
+
generation, Git driver setup, and plugin loading.
|
|
6
|
+
|
|
7
|
+
<details markdown="1">
|
|
8
|
+
<summary>Configuration shape</summary>
|
|
9
|
+
|
|
10
|
+
```yaml
|
|
11
|
+
project_emoji: "💎"
|
|
12
|
+
engines:
|
|
13
|
+
- ruby
|
|
14
|
+
ruby:
|
|
15
|
+
test_minimum: "2.4"
|
|
16
|
+
licenses:
|
|
17
|
+
- MIT
|
|
18
|
+
templates:
|
|
19
|
+
root: packaged
|
|
20
|
+
apply: true
|
|
21
|
+
entries:
|
|
22
|
+
- README.md
|
|
23
|
+
readme:
|
|
24
|
+
section_partials:
|
|
25
|
+
synopsis: readme/partials/synopsis.md
|
|
26
|
+
configuration: readme/partials/configuration.md
|
|
27
|
+
basic_usage: readme/partials/basic_usage.md
|
|
28
|
+
defaults:
|
|
29
|
+
preference: template
|
|
30
|
+
add_template_only_nodes: true
|
|
31
|
+
freeze_token: kettle-jem
|
|
32
|
+
patterns:
|
|
33
|
+
- path: "certs/**"
|
|
34
|
+
strategy: raw_copy
|
|
35
|
+
files:
|
|
36
|
+
Rakefile:
|
|
37
|
+
strategy: merge
|
|
38
|
+
preference: destination
|
|
39
|
+
git_drivers: semantic-diff
|
|
40
|
+
plugins:
|
|
41
|
+
- kettle-drift
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
</details>
|
|
45
|
+
|
|
46
|
+
<details markdown="1">
|
|
47
|
+
<summary>Strategies, tokens, and freeze blocks</summary>
|
|
48
|
+
|
|
49
|
+
Template strategies:
|
|
50
|
+
|
|
51
|
+
| Strategy | Behavior |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `merge` | Resolve tokens, then merge template and destination using the selected recipe. |
|
|
54
|
+
| `accept_template` | Resolve tokens and write the template result. |
|
|
55
|
+
| `keep_destination` | Leave the destination file untouched. |
|
|
56
|
+
| `raw_copy` | Copy bytes exactly, with no token resolution or merge. |
|
|
57
|
+
|
|
58
|
+
`raw_copy` exists for bootstrap files that may be needed before the full
|
|
59
|
+
templating stack is available. Because it bypasses normal template processing,
|
|
60
|
+
do not use it for templates that contain `{KJ\|...}` tokens or require
|
|
61
|
+
StructuredMerge normalization.
|
|
62
|
+
|
|
63
|
+
Merge entries may set `preference`, `add_template_only_nodes`, `freeze_token`,
|
|
64
|
+
`file_type`, and `recipe`. `files` entries match exact paths. `patterns`
|
|
65
|
+
entries are glob-based and the first match wins.
|
|
66
|
+
|
|
67
|
+
Tokens use `{KJ\|TOKEN}` syntax. Environment values win over
|
|
68
|
+
`.structuredmerge/kettle-jem.yml`, and config values win over safe
|
|
69
|
+
gemspec-derived defaults.
|
|
70
|
+
|
|
71
|
+
Freeze blocks use the configured token, defaulting to `kettle-jem`:
|
|
72
|
+
|
|
73
|
+
```ruby
|
|
74
|
+
# kettle-jem:freeze
|
|
75
|
+
gem "local-only", path: "../local-only"
|
|
76
|
+
# kettle-jem:unfreeze
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Content inside a freeze block is preserved from the destination.
|
|
80
|
+
|
|
81
|
+
</details>
|
|
82
|
+
|
|
83
|
+
<details markdown="1">
|
|
84
|
+
<summary>Merge engines and workflows</summary>
|
|
85
|
+
|
|
86
|
+
`kettle-jem` routes files through recipes selected by target path and
|
|
87
|
+
`file_type`. Current Ruby recipes cover README metadata/style, changelog
|
|
88
|
+
normalization, managed text blocks, GitHub funding, GitHub Actions workflows,
|
|
89
|
+
obsolete workflow cleanup, Open Collective cleanup, selected template source
|
|
90
|
+
application, and Rakefile scaffold cleanup.
|
|
91
|
+
|
|
92
|
+
`workflows.preset: framework` generates a Ruby x framework-version CI matrix.
|
|
93
|
+
`workflows.exec_cmd` sets the default command for generated test workflows
|
|
94
|
+
(default: `kettle-test`; ENV override: `KJ_EXEC_CMD`).
|
|
95
|
+
`ruby.test_minimum` sets the lowest MRI Ruby version used for generated CI
|
|
96
|
+
workflows and Appraisals. It defaults to `2.4`, and the effective generated
|
|
97
|
+
floor is never lower than the gemspec `required_ruby_version`.
|
|
98
|
+
`workflows.coverage` enables coverage workflow generation. Existing custom
|
|
99
|
+
workflows can receive pinned-action snippets without replacing the whole file.
|
|
100
|
+
|
|
101
|
+
`git_drivers` defaults to `semantic-diff` during `kettle-jem install`, writing
|
|
102
|
+
managed `.gitattributes` entries plus repo-local `diff.smorg-*` command config.
|
|
103
|
+
Use `builtin-diff` to keep Git's built-in language drivers, `global` to register
|
|
104
|
+
driver commands once per user, `include-file` to write `.git/smorg/config`, and
|
|
105
|
+
`none` to opt out. `check` verifies the local setup, and `undo` removes managed
|
|
106
|
+
driver entries.
|
|
107
|
+
|
|
108
|
+
`plugins` lists extension gems. A plugin is required by gem name, resolved to a
|
|
109
|
+
constant, and called through `register_kettle_jem_plugin(registrar)`. The
|
|
110
|
+
registrar supports `before_phase`, `after_phase`, and `on_phase` hooks.
|
|
111
|
+
|
|
112
|
+
</details>
|