kettle-dev 1.1.7 → 1.1.8

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 (46) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.aiignore.example +19 -0
  4. data/.github/workflows/dep-heads.yml +105 -0
  5. data/.gitlab-ci.yml.example +66 -4
  6. data/.junie/guidelines.md +1 -1
  7. data/.rubocop.yml +3 -9
  8. data/Appraisals +21 -41
  9. data/Appraisals.example +20 -22
  10. data/CHANGELOG.md +25 -2
  11. data/Gemfile +5 -9
  12. data/Gemfile.example +5 -9
  13. data/README.md +4 -2
  14. data/README.md.example +1 -1
  15. data/Rakefile.example +1 -1
  16. data/gemfiles/modular/debug.gemfile +13 -0
  17. data/gemfiles/modular/erb/r2/v3.0.gemfile +1 -0
  18. data/gemfiles/modular/erb/r2.3/default.gemfile +6 -0
  19. data/gemfiles/modular/erb/r2.6/v2.2.gemfile +3 -0
  20. data/gemfiles/modular/erb/r3/v5.0.gemfile +1 -0
  21. data/gemfiles/modular/erb/r3.1/v4.0.gemfile +2 -0
  22. data/gemfiles/modular/erb/vHEAD.gemfile +2 -0
  23. data/gemfiles/modular/mutex_m/r2/v0.3.gemfile +2 -0
  24. data/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile +3 -0
  25. data/gemfiles/modular/mutex_m/r3/v0.3.gemfile +2 -0
  26. data/gemfiles/modular/mutex_m/vHEAD.gemfile +2 -0
  27. data/gemfiles/modular/runtime_heads.gemfile +10 -0
  28. data/gemfiles/modular/stringio/r2/v3.0.gemfile +5 -0
  29. data/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile +4 -0
  30. data/gemfiles/modular/stringio/r3/v3.0.gemfile +5 -0
  31. data/gemfiles/modular/stringio/vHEAD.gemfile +2 -0
  32. data/gemfiles/modular/x_std_libs/r2/libs.gemfile +3 -0
  33. data/gemfiles/modular/x_std_libs/r2.3/libs.gemfile +3 -0
  34. data/gemfiles/modular/x_std_libs/r2.4/libs.gemfile +3 -0
  35. data/gemfiles/modular/x_std_libs/r2.6/libs.gemfile +3 -0
  36. data/gemfiles/modular/x_std_libs/r3/libs.gemfile +3 -0
  37. data/gemfiles/modular/x_std_libs/r3.1/libs.gemfile +3 -0
  38. data/gemfiles/modular/x_std_libs/vHEAD.gemfile +3 -0
  39. data/gemfiles/modular/x_std_libs.gemfile +2 -0
  40. data/lib/kettle/dev/rakelib/spec_test.rake +35 -16
  41. data/lib/kettle/dev/tasks/template_task.rb +34 -6
  42. data/lib/kettle/dev/version.rb +1 -1
  43. data/lib/kettle/dev.rb +4 -0
  44. data.tar.gz.sig +0 -0
  45. metadata +30 -4
  46. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15028cfcd43a77f5fa3e4531711ff94628e0df63fa47882345f00810b9e07431
4
- data.tar.gz: c7e558c0aab2f3b062f8a78b903f346579c7619888d6745424b52c766f1126b8
3
+ metadata.gz: ff2a4f1326475cd3de4fb3decf7b10780dd0bbb16cd55ea1dc5e78f64bfde631
4
+ data.tar.gz: a584158146f8f8a25343523d2cd76cfb5adc4d6e4e5907a215200239170ef620
5
5
  SHA512:
6
- metadata.gz: f482575bb3ee784b08fb4ece99119af1aa371e061dae4c600cb5a9cd0bd708cfccbf26570394b07c6a5d3fd5db3c4ac81f33343ba34536a102c87cce6aa084c9
7
- data.tar.gz: e93880beca5de68e14692277d64840e0b249708042fd9da1fb79285a53f04af3b47d106b2039615084e8c62ed5c00d02fb38cb58646adda9177dff2863674f58
6
+ metadata.gz: 973dc68e687f835510748a22d9d26d6a7d719b4c9ca782fe868c4619aca0c2766bb3d0d4279b78ee2ed407f0b084da45eacc17882ecd9ad116f8fad3b5a70eb9
7
+ data.tar.gz: 8a6761e6d72cf33b92622a9f0706884cc0b0ec1d2e16fc5419685f28dc2497418248eabffcf7447300aec6939c7164a2312c4fec3061137964bf1bce555544f8
checksums.yaml.gz.sig CHANGED
Binary file
data/.aiignore.example ADDED
@@ -0,0 +1,19 @@
1
+ # An .aiignore file follows the same syntax as a .gitignore file.
2
+ # .gitignore documentation: https://git-scm.com/docs/gitignore
3
+
4
+ # you can ignore files
5
+ .DS_Store
6
+ *.log
7
+ *.tmp
8
+
9
+ # or folders
10
+ .devcontainer/
11
+ .qlty/
12
+ .yardoc/
13
+ dist/
14
+ build/
15
+ out/
16
+ coverage/
17
+ docs/
18
+ pkg/
19
+ results/
@@ -0,0 +1,105 @@
1
+ # Targets the evergreen latest release of ruby, truffleruby, and jruby
2
+ # and tests against the HEAD of runtime dependencies
3
+ name: Runtime Deps @ HEAD
4
+
5
+ permissions:
6
+ contents: read
7
+
8
+ env:
9
+ K_SOUP_COV_DO: false
10
+
11
+ on:
12
+ push:
13
+ branches:
14
+ - 'main'
15
+ - '*-stable'
16
+ tags:
17
+ - '!*' # Do not execute on tags
18
+ pull_request:
19
+ branches:
20
+ - '*'
21
+ # Allow manually triggering the workflow.
22
+ workflow_dispatch:
23
+
24
+ # Cancels all previous workflow runs for the same branch that have not yet completed.
25
+ concurrency:
26
+ # The concurrency group contains the workflow name and the branch name.
27
+ group: "${{ github.workflow }}-${{ github.ref }}"
28
+ cancel-in-progress: true
29
+
30
+ jobs:
31
+ test:
32
+ if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
33
+ name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
34
+ runs-on: ubuntu-latest
35
+ continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
36
+ env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
37
+ BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
38
+ strategy:
39
+ fail-fast: true
40
+ matrix:
41
+ include:
42
+ # Ruby 3.4
43
+ - ruby: "ruby"
44
+ appraisal: "dep-heads"
45
+ exec_cmd: "rake test"
46
+ gemfile: "Appraisal.root"
47
+ rubygems: latest
48
+ bundler: latest
49
+
50
+ # truffleruby-24.1
51
+ # (according to documentation: targets Ruby 3.3 compatibility)
52
+ # (according to runtime: targets Ruby 3.2 compatibility)
53
+ - ruby: "truffleruby"
54
+ appraisal: "dep-heads"
55
+ exec_cmd: "rake test"
56
+ gemfile: "Appraisal.root"
57
+ rubygems: default
58
+ bundler: default
59
+
60
+ # jruby-10.0 (targets Ruby 3.4 compatibility)
61
+ - ruby: "jruby"
62
+ appraisal: "dep-heads"
63
+ exec_cmd: "rake test"
64
+ gemfile: "Appraisal.root"
65
+ rubygems: default
66
+ bundler: default
67
+
68
+ steps:
69
+ - name: Checkout
70
+ if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }}
71
+ uses: actions/checkout@v5
72
+
73
+ - name: Setup Ruby & RubyGems
74
+ if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }}
75
+ uses: ruby/setup-ruby@v1
76
+ with:
77
+ ruby-version: ${{ matrix.ruby }}
78
+ rubygems: ${{ matrix.rubygems }}
79
+ bundler: ${{ matrix.bundler }}
80
+ bundler-cache: false
81
+
82
+ # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
83
+ # We need to do this first to get appraisal installed.
84
+ # NOTE: This does not use the primary Gemfile at all.
85
+ - name: "Install Root Appraisal"
86
+ if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }}
87
+ run: bundle
88
+
89
+ - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
90
+ if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }}
91
+ id: bundleAttempt1
92
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle
93
+ # Continue to the next step on failure
94
+ continue-on-error: true
95
+
96
+ # Effectively an automatic retry of the previous step.
97
+ - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
98
+ # If bundleAttempt1 failed, try again here; Otherwise skip.
99
+ if: ${{ steps.bundleAttempt1.outcome == 'failure' && !(env.ACT && startsWith(matrix.ruby, 'jruby')) }}
100
+ id: bundleAttempt2
101
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle
102
+
103
+ - name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }}
104
+ if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }}
105
+ run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
@@ -38,12 +38,12 @@ workflow:
38
38
  # For tags, create a pipeline.
39
39
  - if: '$CI_COMMIT_TAG'
40
40
 
41
- .current_ruby_template: &current_ruby_template
41
+ .test_template-current: &test_definition-current
42
42
  image: ruby:${RUBY_VERSION}
43
43
  stage: test
44
44
  script:
45
45
  # || true so we don't fail here, because it'll probably work even if the gem update fails
46
- - gem update --system > /dev/null 2>&1 || true
46
+ - gem update --silent --system > /dev/null 2>&1 || true
47
47
  - mkdir -p vendor/bundle
48
48
  - bundle config set path 'vendor/bundle'
49
49
  - chmod +t -R vendor/bundle
@@ -61,14 +61,76 @@ workflow:
61
61
  --tag \~ci_skip \
62
62
  --format progress \
63
63
  --format RspecJunitFormatter
64
+ cache:
65
+ key: ${CI_JOB_IMAGE}
66
+ paths:
67
+ - vendor/ruby
64
68
 
69
+ .test_template-legacy: &test_definition-legacy
70
+ image: ruby:${RUBY_VERSION}
71
+ stage: test
72
+ script:
73
+ # RUBYGEMS_VERSION because we support EOL Ruby still...
74
+ # || true so we don't fail here, because it'll probably work even if the gem update fails
75
+ - gem install rubygems-update -v ${RUBYGEMS_VERSION} || true
76
+ # Actually updates both RubyGems and Bundler!
77
+ - update_rubygems
78
+ - mkdir -p vendor/bundle
79
+ - bundle config set path 'vendor/bundle'
80
+ - chmod +t -R vendor/bundle
81
+ - chmod o-w -R vendor/bundle
82
+ # Setup appraisal2
83
+ - bundle install
84
+ # Bundle a specific appraisal
85
+ - bundle exec appraisal ${APPRAISAL} bundle install
86
+ # Light smoke test
87
+ - bundle exec appraisal ${APPRAISAL} bin/rake --tasks
88
+ # Run tests, skipping those that won't work in CI
89
+ - >
90
+ bundle exec appraisal unlocked_deps \
91
+ bin/rspec spec \
92
+ --tag \~ci_skip \
93
+ --format progress \
94
+ --format RspecJunitFormatter
65
95
  cache:
66
96
  key: ${CI_JOB_IMAGE}
67
97
  paths:
68
98
  - vendor/ruby
69
99
 
70
- current-ruby:
71
- <<: *current_ruby_template
100
+ ruby-current:
101
+ variables:
102
+ K_SOUP_COV_DO: true
103
+ <<: *test_definition-current
72
104
  parallel:
73
105
  matrix:
74
106
  - RUBY_VERSION: ["3.2", "3.3", "3.4"]
107
+
108
+ ruby-ruby3_1:
109
+ variables:
110
+ RUBYGEMS_VERSION: "3.6.9"
111
+ APPRAISAL: ruby_3_1
112
+ K_SOUP_COV_DO: false
113
+ <<: *test_definition-legacy
114
+ parallel:
115
+ matrix:
116
+ - RUBY_VERSION: ["3.1"]
117
+
118
+ ruby-ruby3_0:
119
+ variables:
120
+ RUBYGEMS_VERSION: "3.5.23"
121
+ APPRAISAL: ruby_3_0
122
+ K_SOUP_COV_DO: false
123
+ <<: *test_definition-legacy
124
+ parallel:
125
+ matrix:
126
+ - RUBY_VERSION: ["3.0"]
127
+
128
+ ruby-ruby2_7:
129
+ variables:
130
+ RUBYGEMS_VERSION: "3.4.22"
131
+ APPRAISAL: ruby_2_7
132
+ K_SOUP_COV_DO: false
133
+ <<: *test_definition-legacy
134
+ parallel:
135
+ matrix:
136
+ - RUBY_VERSION: ["2.7"]
data/.junie/guidelines.md CHANGED
@@ -13,7 +13,7 @@ This document captures project-specific knowledge to streamline setup, testing,
13
13
  - See CONTRIBUTING.md for details on how to set up your local environment.
14
14
  - Ruby and Bundler
15
15
  - Runtime supports very old Rubies (>= 1.9.2) but development tooling targets >= 2.3 because of CI/setup-ruby and dev dependencies.
16
- - Use a recent Ruby (>= 3.1 recommended) for fastest setup and to exercise modern coverage behavior.
16
+ - Use a recent Ruby (>= 3.4 recommended) for fastest setup and to exercise modern coverage behavior.
17
17
  - Install dependencies via Bundler in project root:
18
18
  - bundle install
19
19
  - Rake tasks (preferred entry points)
data/.rubocop.yml CHANGED
@@ -1,6 +1,9 @@
1
1
  inherit_gem:
2
2
  rubocop-lts: config/rubygem_rspec.yml
3
3
 
4
+ inherit_from:
5
+ - .rubocop_rspec.yml
6
+
4
7
  plugins: rubocop-on-rbs
5
8
 
6
9
  RBS:
@@ -8,12 +11,3 @@ RBS:
8
11
 
9
12
  Layout/IndentationConsistency:
10
13
  Exclude: ['*.md']
11
-
12
- RSpec/ExampleLength:
13
- Enabled: false
14
-
15
- RSpec/MultipleExpectations:
16
- Enabled: false
17
-
18
- RSpec/NestedGroups:
19
- Enabled: false
data/Appraisals CHANGED
@@ -20,12 +20,12 @@
20
20
  # - Broken workflow indicates that a new contributor will have a bad time
21
21
  #
22
22
  appraise "unlocked_deps" do
23
- gem "erb"
24
23
  eval_gemfile "modular/coverage.gemfile"
25
24
  eval_gemfile "modular/documentation.gemfile"
26
25
  eval_gemfile "modular/style.gemfile"
27
26
  eval_gemfile "modular/optional.gemfile"
28
27
  eval_gemfile "modular/recording/r3/recording.gemfile"
28
+ eval_gemfile "modular/x_std_libs.gemfile"
29
29
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
30
30
  # eval_gemfile "modular/injected.gemfile"
31
31
  end
@@ -33,13 +33,11 @@ end
33
33
  # Used for head (nightly) releases of ruby, truffleruby, and jruby.
34
34
  # Split into discrete appraisals if one of them needs a dependency locked discretely.
35
35
  appraise "head" do
36
- gem "erb"
37
- # See: https://github.com/vcr/vcr/issues/1057
36
+ # Why is cgi gem here? See: https://github.com/vcr/vcr/issues/1057
38
37
  gem "cgi", ">= 0.5"
39
- gem "mutex_m", ">= 0.2"
40
- gem "stringio", ">= 3.0"
41
38
  gem "benchmark", "~> 0.4", ">= 0.4.1"
42
39
  eval_gemfile "modular/recording/r3/recording.gemfile"
40
+ eval_gemfile "modular/x_std_libs.gemfile"
43
41
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
44
42
  # eval_gemfile "modular/injected.gemfile"
45
43
  end
@@ -47,61 +45,55 @@ end
47
45
  # Used for current releases of ruby, truffleruby, and jruby.
48
46
  # Split into discrete appraisals if one of them needs a dependency locked discretely.
49
47
  appraise "current" do
50
- gem "erb"
51
- gem "mutex_m", ">= 0.2"
52
- gem "stringio", ">= 3.0"
53
48
  eval_gemfile "modular/recording/r3/recording.gemfile"
49
+ eval_gemfile "modular/x_std_libs.gemfile"
54
50
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
55
51
  # eval_gemfile "modular/injected.gemfile"
56
52
  end
57
53
 
54
+ # Test current Rubies against head versions of runtime dependencies
55
+ appraise "dep-heads" do
56
+ eval_gemfile "modular/runtime_heads.gemfile"
57
+ end
58
+
58
59
  appraise "ruby-2-3" do
59
- # The cake is a lie. erb v2.2, the oldest release on RubyGems.org, was never compatible with Ruby 2.3.
60
- # This means we have no choice but to use the erb that shipped with Ruby 2.3
61
- # /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)
62
- # spec.add_development_dependency("erb", ">= 2.2") # ruby >= 2.3.0, not SemVer, old rubies get dropped in a patch.
63
60
  eval_gemfile "modular/recording/r2.3/recording.gemfile"
61
+ eval_gemfile "modular/x_std_libs/r2.3/libs.gemfile"
64
62
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
65
63
  # eval_gemfile "modular/injected.gemfile"
66
64
  end
67
65
 
68
66
  appraise "ruby-2-4" do
69
- gem "erb"
70
67
  eval_gemfile "modular/recording/r2.4/recording.gemfile"
68
+ eval_gemfile "modular/x_std_libs/r2.4/libs.gemfile"
71
69
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
72
70
  # eval_gemfile "modular/injected.gemfile"
73
71
  end
74
72
 
75
73
  appraise "ruby-2-5" do
76
- gem "erb"
77
74
  eval_gemfile "modular/recording/r2.5/recording.gemfile"
75
+ eval_gemfile "modular/x_std_libs/r2.6/libs.gemfile"
78
76
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
79
77
  # eval_gemfile "modular/injected.gemfile"
80
78
  end
81
79
 
82
80
  appraise "ruby-2-6" do
83
- gem "erb"
84
- gem "mutex_m", "~> 0.2"
85
- gem "stringio", "~> 3.0"
86
81
  eval_gemfile "modular/recording/r2.5/recording.gemfile"
82
+ eval_gemfile "modular/x_std_libs/r2.6/libs.gemfile"
87
83
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
88
84
  # eval_gemfile "modular/injected.gemfile"
89
85
  end
90
86
 
91
87
  appraise "ruby-2-7" do
92
- gem "erb"
93
- gem "mutex_m", "~> 0.2"
94
- gem "stringio", "~> 3.0"
95
88
  eval_gemfile "modular/recording/r2.5/recording.gemfile"
89
+ eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile"
96
90
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
97
91
  # eval_gemfile "modular/injected.gemfile"
98
92
  end
99
93
 
100
94
  appraise "ruby-3-0" do
101
- gem "erb"
102
- gem "mutex_m", "~> 0.2"
103
- gem "stringio", "~> 3.0"
104
95
  eval_gemfile "modular/recording/r3/recording.gemfile"
96
+ eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile"
105
97
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
106
98
  # eval_gemfile "modular/injected.gemfile"
107
99
  end
@@ -109,10 +101,8 @@ end
109
101
  appraise "ruby-3-1" do
110
102
  # all versions of git gem are incompatible with truffleruby v23.0, syntactically.
111
103
  # So tests relying on the git gem are skipped, to avoid loading it.
112
- gem "erb"
113
- gem "mutex_m", "~> 0.2"
114
- gem "stringio", "~> 3.0"
115
104
  eval_gemfile "modular/recording/r3/recording.gemfile"
105
+ eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile"
116
106
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
117
107
  # eval_gemfile "modular/injected.gemfile"
118
108
  end
@@ -120,50 +110,40 @@ end
120
110
  appraise "ruby-3-2" do
121
111
  # all versions of git gem are incompatible with truffleruby v23.1, syntactically.
122
112
  # So tests relying on the git gem are skipped, to avoid loading it.
123
- gem "erb"
124
- gem "mutex_m", "~> 0.2"
125
- gem "stringio", "~> 3.0"
126
113
  eval_gemfile "modular/recording/r3/recording.gemfile"
114
+ eval_gemfile "modular/x_std_libs/r3/libs.gemfile"
127
115
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
128
116
  # eval_gemfile "modular/injected.gemfile"
129
117
  end
130
118
 
131
119
  appraise "ruby-3-3" do
132
120
  eval_gemfile "modular/recording/r3/recording.gemfile"
133
- gem "erb"
134
- gem "mutex_m", "~> 0.2"
135
- gem "stringio", "~> 3.0"
121
+ eval_gemfile "modular/x_std_libs/r3/libs.gemfile"
136
122
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
137
123
  # eval_gemfile "modular/injected.gemfile"
138
124
  end
139
125
 
140
126
  # Only run security audit on the latest version of Ruby
141
127
  appraise "audit" do
142
- gem "erb"
143
- gem "mutex_m", "~> 0.2"
144
- gem "stringio", "~> 3.0"
128
+ eval_gemfile "modular/x_std_libs/r3/libs.gemfile"
145
129
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
146
130
  # eval_gemfile "modular/injected.gemfile"
147
131
  end
148
132
 
149
133
  # Only run coverage on the latest version of Ruby
150
134
  appraise "coverage" do
151
- gem "erb"
152
- gem "mutex_m", "~> 0.2"
153
- gem "stringio", "~> 3.0"
154
135
  eval_gemfile "modular/coverage.gemfile"
155
136
  eval_gemfile "modular/optional.gemfile"
156
137
  eval_gemfile "modular/recording/r3/recording.gemfile"
138
+ eval_gemfile "modular/x_std_libs/r3/libs.gemfile"
157
139
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
158
140
  # eval_gemfile "modular/injected.gemfile"
159
141
  end
160
142
 
161
143
  # Only run linter on the latest version of Ruby (but, in support of oldest supported Ruby version)
162
144
  appraise "style" do
163
- gem "erb"
164
- gem "mutex_m", "~> 0.2"
165
- gem "stringio", "~> 3.0"
166
145
  eval_gemfile "modular/style.gemfile"
146
+ eval_gemfile "modular/x_std_libs/r3/libs.gemfile"
167
147
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
168
148
  # eval_gemfile "modular/injected.gemfile"
169
149
  end
data/Appraisals.example CHANGED
@@ -24,79 +24,77 @@ appraise "unlocked_deps" do
24
24
  eval_gemfile "modular/documentation.gemfile"
25
25
  eval_gemfile "modular/style.gemfile"
26
26
  eval_gemfile "modular/optional.gemfile"
27
+ eval_gemfile "modular/x_std_libs.gemfile"
27
28
  end
28
29
 
29
30
  # Used for head (nightly) releases of ruby, truffleruby, and jruby.
30
31
  # Split into discrete appraisals if one of them needs a dependency locked discretely.
31
32
  appraise "head" do
32
- gem "mutex_m", ">= 0.2"
33
- gem "stringio", ">= 3.0"
34
33
  gem "benchmark", "~> 0.4", ">= 0.4.1"
34
+ eval_gemfile "modular/x_std_libs.gemfile"
35
35
  end
36
36
 
37
37
  # Used for current releases of ruby, truffleruby, and jruby.
38
38
  # Split into discrete appraisals if one of them needs a dependency locked discretely.
39
39
  appraise "current" do
40
- gem "mutex_m", ">= 0.2"
41
- gem "stringio", ">= 3.0"
40
+ eval_gemfile "modular/x_std_libs.gemfile"
41
+ end
42
+
43
+ # Test current Rubies against head versions of runtime dependencies
44
+ appraise "dep-heads" do
45
+ eval_gemfile "modular/runtime_heads.gemfile"
42
46
  end
43
47
 
44
48
  appraise "ruby-2-3" do
49
+ eval_gemfile "modular/x_std_libs/r2.3/libs.gemfile"
45
50
  end
46
51
 
47
52
  appraise "ruby-2-4" do
53
+ eval_gemfile "modular/x_std_libs/r2.4/libs.gemfile"
48
54
  end
49
55
 
50
56
  appraise "ruby-2-5" do
57
+ eval_gemfile "modular/x_std_libs/r2.6/libs.gemfile"
51
58
  end
52
59
 
53
60
  appraise "ruby-2-6" do
54
- gem "mutex_m", "~> 0.2"
55
- gem "stringio", "~> 3.0"
61
+ eval_gemfile "modular/x_std_libs/r2.6/libs.gemfile"
56
62
  end
57
63
 
58
64
  appraise "ruby-2-7" do
59
- gem "mutex_m", "~> 0.2"
60
- gem "stringio", "~> 3.0"
65
+ eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile"
61
66
  end
62
67
 
63
68
  appraise "ruby-3-0" do
64
- gem "mutex_m", "~> 0.2"
65
- gem "stringio", "~> 3.0"
69
+ eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile"
66
70
  end
67
71
 
68
72
  appraise "ruby-3-1" do
69
- gem "mutex_m", "~> 0.2"
70
- gem "stringio", "~> 3.0"
73
+ eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile"
71
74
  end
72
75
 
73
76
  appraise "ruby-3-2" do
74
- gem "mutex_m", "~> 0.2"
75
- gem "stringio", "~> 3.0"
77
+ eval_gemfile "modular/x_std_libs/3/libs.gemfile"
76
78
  end
77
79
 
78
80
  appraise "ruby-3-3" do
79
- gem "mutex_m", "~> 0.2"
80
- gem "stringio", "~> 3.0"
81
+ eval_gemfile "modular/x_std_libs/r3/libs.gemfile"
81
82
  end
82
83
 
83
84
  # Only run security audit on the latest version of Ruby
84
85
  appraise "audit" do
85
- gem "mutex_m", "~> 0.2"
86
- gem "stringio", "~> 3.0"
86
+ eval_gemfile "modular/x_std_libs/r3/libs.gemfile"
87
87
  end
88
88
 
89
89
  # Only run coverage on the latest version of Ruby
90
90
  appraise "coverage" do
91
- gem "mutex_m", "~> 0.2"
92
- gem "stringio", "~> 3.0"
93
91
  eval_gemfile "modular/coverage.gemfile"
94
92
  eval_gemfile "modular/optional.gemfile"
93
+ eval_gemfile "modular/x_std_libs/r3/libs.gemfile"
95
94
  end
96
95
 
97
96
  # Only run linter on the latest version of Ruby (but, in support of oldest supported Ruby version)
98
97
  appraise "style" do
99
- gem "mutex_m", "~> 0.2"
100
- gem "stringio", "~> 3.0"
101
98
  eval_gemfile "modular/style.gemfile"
99
+ eval_gemfile "modular/x_std_libs/r3/libs.gemfile"
102
100
  end
data/CHANGELOG.md CHANGED
@@ -24,6 +24,27 @@ Please file a bug if you notice a violation of semantic versioning.
24
24
  ### Fixed
25
25
  ### Security
26
26
 
27
+ ## [1.1.8] - 2025-09-07
28
+ - TAG: [v1.1.8][1.1.8t]
29
+ - COVERAGE: 97.16% -- 3246/3341 lines in 23 files
30
+ - BRANCH COVERAGE: 81.95% -- 1344/1640 branches in 23 files
31
+ - 76.97% documented
32
+ ### Added
33
+ - add .aiignore to the template
34
+ - add .rubocop_rspec.yml to the template
35
+ - gemfiles/modular/x_std_libs pattern to template, including:
36
+ - erb
37
+ - mutex_m
38
+ - stringio
39
+ - gemfiles/modular/debug.gemfile
40
+ - gemfiles/modular/runtime_heads.gemfile
41
+ - .github/workflows/dep-heads.yml
42
+ - (performance) filter and prioritize example files in the `.github` directory
43
+ - added codecov config to the template
44
+ - Kettle::Dev.default_registered?
45
+ ### Fixed
46
+ - run specs as part of the test task
47
+
27
48
  ## [1.1.7] - 2025-09-06
28
49
  - TAG: [v1.1.7][1.1.7t]
29
50
  - COVERAGE: 97.12% -- 3237/3333 lines in 23 files
@@ -71,7 +92,7 @@ Please file a bug if you notice a violation of semantic versioning.
71
92
  ### Removed
72
93
  - defensive NameError handling in ChangelogCLI.abort method
73
94
  ### Fixed
74
- - replace token {OPENCOLLECTIVE|ORG_NAME} with funding org name
95
+ - replace token `{OPENCOLLECTIVE|ORG_NAME}` with funding org name
75
96
  - prefer .example version of .git-hooks
76
97
  - kettle-commit-msg now runs via rubygems (not bundler) so it will work via a system gem
77
98
  - fixed logic for handling derivation of forge and funding URLs
@@ -522,7 +543,9 @@ Please file a bug if you notice a violation of semantic versioning.
522
543
  - Selecting will run the selected workflow via `act`
523
544
  - This may move to its own gem in the future.
524
545
 
525
- [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.7...HEAD
546
+ [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.8...HEAD
547
+ [1.1.8]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.7...v1.1.8
548
+ [1.1.8t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.8
526
549
  [1.1.7]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.6...v1.1.7
527
550
  [1.1.7t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.7
528
551
  [1.1.6]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.5...v1.1.6
data/Gemfile CHANGED
@@ -12,15 +12,8 @@ git_source(:gitlab) { |repo_name| "https://gitlab.com/#{repo_name}" }
12
12
  # Include dependencies from <gem name>.gemspec
13
13
  gemspec
14
14
 
15
- platform :mri do
16
- # Debugging - Ensure ENV["DEBUG"] == "true" to use debuggers within spec suite
17
- # Use binding.break, binding.b, or debugger in code
18
- gem "debug", ">= 1.0.0" # ruby >= 2.7
19
- gem "gem_bench", "~> 2.0", ">= 2.0.5"
20
-
21
- # Dev Console - Binding.pry - Irb replacement
22
- gem "pry", "~> 0.14" # ruby >= 2.0
23
- end
15
+ # Debugging
16
+ eval_gemfile "gemfiles/modular/debug.gemfile"
24
17
 
25
18
  # Code Coverage
26
19
  eval_gemfile "gemfiles/modular/coverage.gemfile"
@@ -37,5 +30,8 @@ eval_gemfile "gemfiles/modular/documentation.gemfile"
37
30
  # Optional
38
31
  eval_gemfile "gemfiles/modular/optional.gemfile"
39
32
 
33
+ ### Std Lib Extracted Gems
34
+ eval_gemfile "gemfiles/modular/x_std_libs.gemfile"
35
+
40
36
  # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
41
37
  # eval_gemfile "gemfiles/modular/injected.gemfile"
data/Gemfile.example CHANGED
@@ -12,15 +12,8 @@ git_source(:gitlab) { |repo_name| "https://gitlab.com/#{repo_name}" }
12
12
  # Include dependencies from <gem name>.gemspec
13
13
  gemspec
14
14
 
15
- platform :mri do
16
- # Debugging - Ensure ENV["DEBUG"] == "true" to use debuggers within spec suite
17
- # Use binding.break, binding.b, or debugger in code
18
- gem "debug", ">= 1.0.0" # ruby >= 2.7
19
- gem "gem_bench", "~> 2.0", ">= 2.0.5"
20
-
21
- # Dev Console - Binding.pry - Irb replacement
22
- gem "pry", "~> 0.14" # ruby >= 2.0
23
- end
15
+ # Debugging
16
+ eval_gemfile "gemfiles/modular/debug.gemfile"
24
17
 
25
18
  # Code Coverage
26
19
  eval_gemfile "gemfiles/modular/coverage.gemfile"
@@ -33,3 +26,6 @@ eval_gemfile "gemfiles/modular/documentation.gemfile"
33
26
 
34
27
  # Optional
35
28
  eval_gemfile "gemfiles/modular/optional.gemfile"
29
+
30
+ ### Std Lib Extracted Gems
31
+ eval_gemfile "gemfiles/modular/x_std_libs.gemfile"
data/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  # 🍲 Kettle::Dev
11
11
 
12
- [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🔑codecovi]][🔑codecov] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] [![QLTY Maintainability][🔑qlty-mnti]][🔑qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL]
12
+ [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🔑codecovi]][🔑codecov] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] [![QLTY Maintainability][🔑qlty-mnti]][🔑qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL]
13
13
 
14
14
  If ☝️ `ci_badges.map(&:color).detect { it != "green"}` [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
15
15
 
@@ -853,6 +853,8 @@ Thanks for RTFM. ☺️
853
853
  [🚎10-j-wfi]: https://github.com/kettle-rb/kettle-dev/actions/workflows/jruby.yml/badge.svg
854
854
  [🚎11-c-wf]: https://github.com/kettle-rb/kettle-dev/actions/workflows/current.yml
855
855
  [🚎11-c-wfi]: https://github.com/kettle-rb/kettle-dev/actions/workflows/current.yml/badge.svg
856
+ [🚎12-crh-wf]: https://github.com/kettle-rb/kettle-dev/actions/workflows/dep-heads.yml
857
+ [🚎12-crh-wfi]: https://github.com/kettle-rb/kettle-dev/actions/workflows/dep-heads.yml/badge.svg
856
858
  [🚎13-🔒️-wf]: https://github.com/kettle-rb/kettle-dev/actions/workflows/locked_deps.yml
857
859
  [🚎13-🔒️-wfi]: https://github.com/kettle-rb/kettle-dev/actions/workflows/locked_deps.yml/badge.svg
858
860
  [🚎14-🔓️-wf]: https://github.com/kettle-rb/kettle-dev/actions/workflows/unlocked_deps.yml
@@ -905,7 +907,7 @@ Thanks for RTFM. ☺️
905
907
  [📌gitmoji]:https://gitmoji.dev
906
908
  [📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
907
909
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
908
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-3.333-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
910
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-3.341-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
909
911
  [🔐security]: SECURITY.md
910
912
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
911
913
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
data/README.md.example CHANGED
@@ -505,7 +505,7 @@ Thanks for RTFM. ☺️
505
505
  [📌gitmoji]:https://gitmoji.dev
506
506
  [📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
507
507
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
508
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-3.333-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
508
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-3.341-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
509
509
  [🔐security]: SECURITY.md
510
510
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
511
511
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
data/Rakefile.example CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # kettle-dev Rakefile v1.1.7 - 2025-09-06
3
+ # kettle-dev Rakefile v1.1.8 - 2025-09-07
4
4
  # Ruby 2.3 (Safe Navigation) or higher required
5
5
  #
6
6
  # MIT License (see License.txt)
@@ -0,0 +1,13 @@
1
+ # Ex-Standard Library gems
2
+ gem "irb", "~> 1.15", ">= 1.15.2" # removed from stdlib in 3.5
3
+
4
+ platform :mri do
5
+ # Debugging - Ensure ENV["DEBUG"] == "true" to use debuggers within spec suite
6
+ # Use binding.break, binding.b, or debugger in code
7
+ gem "debug", ">= 1.1" # ruby >= 2.7
8
+
9
+ # Dev Console - Binding.pry - Irb replacement
10
+ # gem "pry", "~> 0.14" # ruby >= 2.0
11
+ end
12
+
13
+ gem "gem_bench", "~> 2.0", ">= 2.0.5"
@@ -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 on RubyGems.org, 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", "~> 5.0" # 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,2 @@
1
+ # Ruby >= 3.2 (dependency of kettle-dev)
2
+ gem "erb", github: "ruby/erb", branch: "master"
@@ -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 (dependency of omniauth)
2
+ gem "mutex_m", github: "ruby/mutex_m", branch: "master"
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Test against HEAD of runtime dependencies so we can proactively file bugs
4
+
5
+ # Ruby >= 2.2
6
+ gem "version_gem", github: "ruby-oauth/version_gem", branch: "main"
7
+
8
+ eval_gemfile("x_std_libs/vHEAD.gemfile")
9
+
10
+ eval_gemfile("recording/vHEAD.gemfile")
@@ -0,0 +1,5 @@
1
+ # !!WARNING!!
2
+ # NOT SEMVER
3
+ # Version 3.0.7 dropped support for Ruby <= 2.7
4
+ # Version 3.0.0 dropped support for Ruby <= 2.4
5
+ gem "stringio", ">= 3.0"
@@ -0,0 +1,4 @@
1
+ # !!WARNING!!
2
+ # NOT SEMVER
3
+ # Last version to support Ruby <= 2.5
4
+ gem "stringio", ">= 0.0.2"
@@ -0,0 +1,5 @@
1
+ # !!WARNING!!
2
+ # NOT SEMVER
3
+ # Version 3.0.7 dropped support for Ruby <= 2.7
4
+ # Version 3.0.0 dropped support for Ruby <= 2.4
5
+ gem "stringio", ">= 3.0"
@@ -0,0 +1,2 @@
1
+ # Ruby >= 2.5 (dependency of omniauth)
2
+ gem "stringio", github: "ruby/stringio", branch: "master"
@@ -0,0 +1,3 @@
1
+ eval_gemfile "../../erb/r2/v3.0.gemfile"
2
+ eval_gemfile "../../mutex_m/r2/v0.3.gemfile"
3
+ eval_gemfile "../../stringio/r2/v3.0.gemfile"
@@ -0,0 +1,3 @@
1
+ eval_gemfile "../../erb/r2.3/default.gemfile"
2
+ eval_gemfile "../../mutex_m/r2.4/v0.1.gemfile"
3
+ eval_gemfile "../../stringio/r2.4/v0.0.2.gemfile"
@@ -0,0 +1,3 @@
1
+ eval_gemfile "../../erb/r2.6/v2.2.gemfile"
2
+ eval_gemfile "../../mutex_m/r2.4/v0.1.gemfile"
3
+ eval_gemfile "../../stringio/r2.4/v0.0.2.gemfile"
@@ -0,0 +1,3 @@
1
+ eval_gemfile "../../erb/r2.6/v2.2.gemfile"
2
+ eval_gemfile "../../mutex_m/r2/v0.3.gemfile"
3
+ eval_gemfile "../../stringio/r2/v3.0.gemfile"
@@ -0,0 +1,3 @@
1
+ eval_gemfile "../../erb/r3/v5.0.gemfile"
2
+ eval_gemfile "../../mutex_m/r3/v0.3.gemfile"
3
+ eval_gemfile "../../stringio/r3/v3.0.gemfile"
@@ -0,0 +1,3 @@
1
+ eval_gemfile "../../erb/r3.1/v4.0.gemfile"
2
+ eval_gemfile "../../mutex_m/r3/v0.3.gemfile"
3
+ eval_gemfile "../../stringio/r3/v3.0.gemfile"
@@ -0,0 +1,3 @@
1
+ eval_gemfile "../erb/vHEAD.gemfile"
2
+ eval_gemfile "../mutex_m/vHEAD.gemfile"
3
+ eval_gemfile "../stringio/vHEAD.gemfile"
@@ -0,0 +1,2 @@
1
+ ### Std Lib Extracted Gems
2
+ eval_gemfile "x_std_libs/r3/libs.gemfile"
@@ -2,22 +2,8 @@
2
2
 
3
3
  require "fileutils"
4
4
 
5
- # Setup RSpec
6
- begin
7
- require "rspec/core/rake_task"
8
-
9
- RSpec::Core::RakeTask.new(:spec)
10
- # This takes the place of `coverage` task when running as CI=true
11
- Kettle::Dev.register_default("spec") if Kettle::Dev::IS_CI
12
- rescue LoadError
13
- warn("[kettle-dev][spec_test.rake] failed to load rspec/core/rake_task") if Kettle::Dev::DEBUGGING
14
- desc("spec task stub")
15
- task(:spec) do
16
- warn("NOTE: rspec isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
17
- end
18
- end
19
-
20
- # Setup MiniTest
5
+ # rubocop:disable Rake/DuplicateTask
6
+ # Set up MiniTest
21
7
  begin
22
8
  require "rake/testtask"
23
9
 
@@ -26,6 +12,7 @@ begin
26
12
  t.test_files = FileList["test/**/*test*.rb"]
27
13
  t.verbose = true
28
14
  end
15
+ Kettle::Dev.register_default("test")
29
16
  rescue LoadError
30
17
  warn("[kettle-dev][spec_test.rake] failed to load rake/testtask") if Kettle::Dev::DEBUGGING
31
18
  desc("test task stub")
@@ -33,3 +20,35 @@ rescue LoadError
33
20
  warn("NOTE: minitest isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
34
21
  end
35
22
  end
23
+
24
+ # Setup RSpec
25
+ begin
26
+ require "rspec/core/rake_task"
27
+
28
+ RSpec::Core::RakeTask.new(:spec)
29
+ # This takes the place of `coverage` task it hasn't been registered yet.
30
+ Kettle::Dev.register_default("spec") unless Kettle::Dev.default_registered?("coverage")
31
+ rescue LoadError
32
+ warn("[kettle-dev][spec_test.rake] failed to load rspec/core/rake_task") if Kettle::Dev::DEBUGGING
33
+ desc("spec task stub")
34
+ task(:spec) do
35
+ warn("NOTE: rspec isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
36
+ end
37
+ end
38
+
39
+ spec_registered = Kettle::Dev.default_registered?("spec")
40
+ coverage_registered = Kettle::Dev.default_registered?("coverage")
41
+ test_registered = Kettle::Dev.default_registered?("test")
42
+ spec_or_coverage = spec_registered || coverage_registered
43
+
44
+ if spec_or_coverage && !test_registered
45
+ task test: :spec
46
+ elsif test_registered && !spec_or_coverage
47
+ task spec: :test
48
+ elsif test_registered && spec_or_coverage
49
+ # When we have both tasks registered, make spec run as part of the test task
50
+ task test: :spec
51
+ else
52
+ puts "No test task is registered."
53
+ end
54
+ # rubocop:enable Rake/DuplicateTask
@@ -41,9 +41,21 @@ module Kettle
41
41
  # 2) .github/**/*.yml with FUNDING.yml customizations
42
42
  source_github_dir = File.join(gem_checkout_root, ".github")
43
43
  if Dir.exist?(source_github_dir)
44
- files = Dir.glob(File.join(source_github_dir, "**", "*.yml")) +
44
+ # Build a unique set of logical .yml paths, preferring the .example variant when present
45
+ candidates = Dir.glob(File.join(source_github_dir, "**", "*.yml")) +
45
46
  Dir.glob(File.join(source_github_dir, "**", "*.yml.example"))
46
- files.uniq.each do |orig_src|
47
+ selected = {}
48
+ candidates.each do |path|
49
+ # Key by the path without the optional .example suffix
50
+ key = path.sub(/\.example\z/, "")
51
+ # Prefer example: overwrite a plain selection with .example, but do not downgrade
52
+ if path.end_with?(".example")
53
+ selected[key] = path
54
+ else
55
+ selected[key] ||= path
56
+ end
57
+ end
58
+ selected.values.each do |orig_src|
47
59
  src = helpers.prefer_example(orig_src)
48
60
  # Destination path should never include the .example suffix.
49
61
  rel = orig_src.sub(/^#{Regexp.escape(gem_checkout_root)}\/?/, "").sub(/\.example\z/, "")
@@ -151,6 +163,20 @@ module Kettle
151
163
  end
152
164
  end
153
165
 
166
+ # 4b) Additional modular gemfiles to include
167
+ ["debug.gemfile", "runtime_heads.gemfile"].each do |fname|
168
+ src = helpers.prefer_example(File.join(gem_checkout_root, "gemfiles/modular", fname))
169
+ dest = File.join(project_root, "gemfiles/modular", fname)
170
+ helpers.copy_file_with_prompt(src, dest, allow_create: true, allow_replace: true)
171
+ end
172
+
173
+ # 4c) Copy modular directories with nested/versioned files
174
+ %w[erb mutex_m stringio x_std_libs].each do |dir|
175
+ src_dir = File.join(gem_checkout_root, "gemfiles/modular", dir)
176
+ dest_dir = File.join(project_root, "gemfiles/modular", dir)
177
+ helpers.copy_dir_with_prompt(src_dir, dest_dir)
178
+ end
179
+
154
180
  # 5) spec/spec_helper.rb (no create)
155
181
  dest_spec_helper = File.join(project_root, "spec/spec_helper.rb")
156
182
  if File.file?(dest_spec_helper)
@@ -347,16 +373,20 @@ module Kettle
347
373
  end
348
374
 
349
375
  files_to_copy = %w[
376
+ .aiignore
350
377
  .envrc
351
378
  .gitignore
352
379
  .gitlab-ci.yml
380
+ .junie/guidelines-rbs.md
381
+ .junie/guidelines.md
382
+ .opencollective.yml
353
383
  .rspec
354
384
  .rubocop.yml
385
+ .rubocop_rspec.yml
355
386
  .simplecov
356
387
  .tool-versions
357
388
  .yard_gfm_support.rb
358
389
  .yardopts
359
- .opencollective.yml
360
390
  Appraisal.root.gemfile
361
391
  Appraisals
362
392
  CHANGELOG.md
@@ -365,12 +395,10 @@ module Kettle
365
395
  CONTRIBUTING.md
366
396
  FUNDING.md
367
397
  Gemfile
368
- Rakefile
369
398
  README.md
370
399
  RUBOCOP.md
400
+ Rakefile
371
401
  SECURITY.md
372
- .junie/guidelines.md
373
- .junie/guidelines-rbs.md
374
402
  ]
375
403
 
376
404
  # Snapshot existing README content once (for H1 prefix preservation after write)
@@ -6,7 +6,7 @@ module Kettle
6
6
  module Version
7
7
  # The gem version.
8
8
  # @return [String]
9
- VERSION = "1.1.7"
9
+ VERSION = "1.1.8"
10
10
 
11
11
  module_function
12
12
 
data/lib/kettle/dev.rb CHANGED
@@ -109,6 +109,10 @@ module Kettle
109
109
  defaults
110
110
  end
111
111
 
112
+ def default_registered?(task_name)
113
+ defaults.include?(task_name.to_s)
114
+ end
115
+
112
116
  private
113
117
 
114
118
  ### LINTING TASKS
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -215,6 +215,7 @@ extra_rdoc_files:
215
215
  - RUBOCOP.md
216
216
  - SECURITY.md
217
217
  files:
218
+ - ".aiignore.example"
218
219
  - ".devcontainer/devcontainer.json"
219
220
  - ".env.local.example"
220
221
  - ".envrc"
@@ -232,6 +233,7 @@ files:
232
233
  - ".github/workflows/coverage.yml"
233
234
  - ".github/workflows/coverage.yml.example"
234
235
  - ".github/workflows/current.yml"
236
+ - ".github/workflows/dep-heads.yml"
235
237
  - ".github/workflows/dependency-review.yml"
236
238
  - ".github/workflows/discord-notifier.yml"
237
239
  - ".github/workflows/heads.yml"
@@ -287,12 +289,36 @@ files:
287
289
  - exe/kettle-readme-backers
288
290
  - exe/kettle-release
289
291
  - gemfiles/modular/coverage.gemfile
292
+ - gemfiles/modular/debug.gemfile
290
293
  - gemfiles/modular/documentation.gemfile
294
+ - gemfiles/modular/erb/r2.3/default.gemfile
295
+ - gemfiles/modular/erb/r2.6/v2.2.gemfile
296
+ - gemfiles/modular/erb/r2/v3.0.gemfile
297
+ - gemfiles/modular/erb/r3.1/v4.0.gemfile
298
+ - gemfiles/modular/erb/r3/v5.0.gemfile
299
+ - gemfiles/modular/erb/vHEAD.gemfile
291
300
  - gemfiles/modular/injected.gemfile
301
+ - gemfiles/modular/mutex_m/r2.4/v0.1.gemfile
302
+ - gemfiles/modular/mutex_m/r2/v0.3.gemfile
303
+ - gemfiles/modular/mutex_m/r3/v0.3.gemfile
304
+ - gemfiles/modular/mutex_m/vHEAD.gemfile
292
305
  - gemfiles/modular/optional.gemfile
293
306
  - gemfiles/modular/optional.gemfile.example
307
+ - gemfiles/modular/runtime_heads.gemfile
308
+ - gemfiles/modular/stringio/r2.4/v0.0.2.gemfile
309
+ - gemfiles/modular/stringio/r2/v3.0.gemfile
310
+ - gemfiles/modular/stringio/r3/v3.0.gemfile
311
+ - gemfiles/modular/stringio/vHEAD.gemfile
294
312
  - gemfiles/modular/style.gemfile
295
313
  - gemfiles/modular/style.gemfile.example
314
+ - gemfiles/modular/x_std_libs.gemfile
315
+ - gemfiles/modular/x_std_libs/r2.3/libs.gemfile
316
+ - gemfiles/modular/x_std_libs/r2.4/libs.gemfile
317
+ - gemfiles/modular/x_std_libs/r2.6/libs.gemfile
318
+ - gemfiles/modular/x_std_libs/r2/libs.gemfile
319
+ - gemfiles/modular/x_std_libs/r3.1/libs.gemfile
320
+ - gemfiles/modular/x_std_libs/r3/libs.gemfile
321
+ - gemfiles/modular/x_std_libs/vHEAD.gemfile
296
322
  - kettle-dev.gemspec.example
297
323
  - lib/kettle-dev.rb
298
324
  - lib/kettle/dev.rb
@@ -354,10 +380,10 @@ licenses:
354
380
  - MIT
355
381
  metadata:
356
382
  homepage_uri: https://kettle-dev.galtzo.com/
357
- source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1.7
358
- changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1.7/CHANGELOG.md
383
+ source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1.8
384
+ changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1.8/CHANGELOG.md
359
385
  bug_tracker_uri: https://github.com/kettle-rb/kettle-dev/issues
360
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1.7
386
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1.8
361
387
  funding_uri: https://github.com/sponsors/pboling
362
388
  wiki_uri: https://github.com/kettle-rb/kettle-dev/wiki
363
389
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file