kettle-dev 1.1.6 → 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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.aiignore.example +19 -0
- data/.git-hooks/commit-msg +2 -1
- data/.github/workflows/current.yml +5 -0
- data/.github/workflows/dep-heads.yml +105 -0
- data/.github/workflows/heads.yml +7 -2
- data/.github/workflows/heads.yml.example +7 -2
- data/.github/workflows/jruby.yml +5 -0
- data/.github/workflows/jruby.yml.example +5 -0
- data/.gitlab-ci.yml.example +66 -4
- data/.junie/guidelines.md +1 -1
- data/.rubocop.yml +3 -9
- data/Appraisals +21 -41
- data/Appraisals.example +20 -22
- data/CHANGELOG.md +45 -2
- data/Gemfile +5 -9
- data/Gemfile.example +5 -9
- data/README.md +4 -2
- data/README.md.example +1 -1
- data/Rakefile.example +1 -1
- data/gemfiles/modular/debug.gemfile +13 -0
- data/gemfiles/modular/erb/r2/v3.0.gemfile +1 -0
- data/gemfiles/modular/erb/r2.3/default.gemfile +6 -0
- data/gemfiles/modular/erb/r2.6/v2.2.gemfile +3 -0
- data/gemfiles/modular/erb/r3/v5.0.gemfile +1 -0
- data/gemfiles/modular/erb/r3.1/v4.0.gemfile +2 -0
- data/gemfiles/modular/erb/vHEAD.gemfile +2 -0
- data/gemfiles/modular/mutex_m/r2/v0.3.gemfile +2 -0
- data/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile +3 -0
- data/gemfiles/modular/mutex_m/r3/v0.3.gemfile +2 -0
- data/gemfiles/modular/mutex_m/vHEAD.gemfile +2 -0
- data/gemfiles/modular/optional.gemfile +4 -1
- data/gemfiles/modular/runtime_heads.gemfile +10 -0
- data/gemfiles/modular/stringio/r2/v3.0.gemfile +5 -0
- data/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile +4 -0
- data/gemfiles/modular/stringio/r3/v3.0.gemfile +5 -0
- data/gemfiles/modular/stringio/vHEAD.gemfile +2 -0
- data/gemfiles/modular/x_std_libs/r2/libs.gemfile +3 -0
- data/gemfiles/modular/x_std_libs/r2.3/libs.gemfile +3 -0
- data/gemfiles/modular/x_std_libs/r2.4/libs.gemfile +3 -0
- data/gemfiles/modular/x_std_libs/r2.6/libs.gemfile +3 -0
- data/gemfiles/modular/x_std_libs/r3/libs.gemfile +3 -0
- data/gemfiles/modular/x_std_libs/r3.1/libs.gemfile +3 -0
- data/gemfiles/modular/x_std_libs/vHEAD.gemfile +3 -0
- data/gemfiles/modular/x_std_libs.gemfile +2 -0
- data/lib/kettle/dev/rakelib/appraisal.rake +27 -0
- data/lib/kettle/dev/rakelib/spec_test.rake +35 -16
- data/lib/kettle/dev/tasks/ci_task.rb +1 -5
- data/lib/kettle/dev/tasks/install_task.rb +4 -6
- data/lib/kettle/dev/tasks/template_task.rb +35 -11
- data/lib/kettle/dev/version.rb +1 -1
- data/lib/kettle/dev.rb +4 -0
- data.tar.gz.sig +0 -0
- metadata +31 -25
- metadata.gz.sig +4 -2
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
|
-
|
41
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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,45 @@ 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
|
+
|
48
|
+
## [1.1.7] - 2025-09-06
|
49
|
+
- TAG: [v1.1.7][1.1.7t]
|
50
|
+
- COVERAGE: 97.12% -- 3237/3333 lines in 23 files
|
51
|
+
- BRANCH COVERAGE: 81.95% -- 1344/1640 branches in 23 files
|
52
|
+
- 76.97% documented
|
53
|
+
### Added
|
54
|
+
- rake task - `appraisal:install`
|
55
|
+
- initial setup for projects that didn't previously use Appraisal
|
56
|
+
### Changed
|
57
|
+
- .git-hooks/commit-msg allows commit if gitmoji-regex is unavailable
|
58
|
+
- simplified `*Task` classes' `task_abort` methods to just raise Kettle::Dev::Error
|
59
|
+
- Allows caller to decide how to handle.
|
60
|
+
### Removed
|
61
|
+
- addressable, rake runtime dependencies
|
62
|
+
- moved to optional, or development dependencies
|
63
|
+
### Fixed
|
64
|
+
- Fix local CI via act for templated workflows (skip JRuby in nektos/act locally)
|
65
|
+
|
27
66
|
## [1.1.6] - 2025-09-05
|
28
67
|
- TAG: [v1.1.6][1.1.6t]
|
29
68
|
- COVERAGE: 97.06% -- 3241/3339 lines in 23 files
|
@@ -53,7 +92,7 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
53
92
|
### Removed
|
54
93
|
- defensive NameError handling in ChangelogCLI.abort method
|
55
94
|
### Fixed
|
56
|
-
- replace token {OPENCOLLECTIVE|ORG_NAME} with funding org name
|
95
|
+
- replace token `{OPENCOLLECTIVE|ORG_NAME}` with funding org name
|
57
96
|
- prefer .example version of .git-hooks
|
58
97
|
- kettle-commit-msg now runs via rubygems (not bundler) so it will work via a system gem
|
59
98
|
- fixed logic for handling derivation of forge and funding URLs
|
@@ -504,7 +543,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
504
543
|
- Selecting will run the selected workflow via `act`
|
505
544
|
- This may move to its own gem in the future.
|
506
545
|
|
507
|
-
[Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.
|
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
|
549
|
+
[1.1.7]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.6...v1.1.7
|
550
|
+
[1.1.7t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.7
|
508
551
|
[1.1.6]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.5...v1.1.6
|
509
552
|
[1.1.6t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.6
|
510
553
|
[1.1.5]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.4...v1.1.5
|
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
|
-
|
16
|
-
|
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
|
-
|
16
|
-
|
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.
|
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.
|
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
@@ -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 @@
|
|
1
|
+
gem "erb", "~> 5.0" # ruby >= 3.2.0
|
@@ -2,4 +2,7 @@
|
|
2
2
|
# git gem is not a direct dependency for two reasons:
|
3
3
|
# 1. it is incompatible with Truffleruby v23
|
4
4
|
# 2. it depends on activesupport, which is too heavy
|
5
|
-
gem "git", ">= 1.19.1"
|
5
|
+
gem "git", ">= 1.19.1" # ruby >= 2.3
|
6
|
+
|
7
|
+
# URL parsing with Unicode support (falls back to URI if not available)
|
8
|
+
gem "addressable", ">= 2.8", "< 3" # ruby >= 2.2
|
@@ -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")
|
@@ -4,6 +4,33 @@
|
|
4
4
|
begin
|
5
5
|
require "appraisal/task"
|
6
6
|
|
7
|
+
desc("Install Appraisal gemfiles (initial setup for projects that didn't previously use Appraisal)")
|
8
|
+
task("appraisal:install") do
|
9
|
+
bundle = Gem.bindir ? File.join(Gem.bindir, "bundle") : "bundle"
|
10
|
+
|
11
|
+
run_in_unbundled = proc do
|
12
|
+
env = {"BUNDLE_GEMFILE" => "Appraisal.root.gemfile"}
|
13
|
+
|
14
|
+
# 1) bundle install --gemfile Appraisal.root.gemfile
|
15
|
+
ok = system(bundle, "install", "--gemfile", "Appraisal.root.gemfile")
|
16
|
+
abort("appraisal:install failed: bundle install --gemfile Appraisal.root.gemfile") unless ok
|
17
|
+
|
18
|
+
# 2) BUNDLE_GEMFILE=Appraisal.root.gemfile bundle exec appraisal install
|
19
|
+
ok = system(env, bundle, "exec", "appraisal", "install")
|
20
|
+
abort("appraisal:install failed: bundle exec appraisal install") unless ok
|
21
|
+
|
22
|
+
# 3) bundle exec rake rubocop_gradual:autocorrect
|
23
|
+
ok = system(bundle, "exec", "rake", "rubocop_gradual:autocorrect")
|
24
|
+
abort("appraisal:update failed: rubocop_gradual:autocorrect") unless ok
|
25
|
+
end
|
26
|
+
|
27
|
+
if defined?(Bundler)
|
28
|
+
Bundler.with_unbundled_env(&run_in_unbundled)
|
29
|
+
else
|
30
|
+
run_in_unbundled.call
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
7
34
|
desc("Update Appraisal gemfiles and run RuboCop Gradual autocorrect")
|
8
35
|
task("appraisal:update") do
|
9
36
|
bundle = Gem.bindir ? File.join(Gem.bindir, "bundle") : "bundle"
|
@@ -2,22 +2,8 @@
|
|
2
2
|
|
3
3
|
require "fileutils"
|
4
4
|
|
5
|
-
#
|
6
|
-
|
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
|
@@ -15,11 +15,7 @@ module Kettle
|
|
15
15
|
|
16
16
|
# Local abort indirection to enable mocking via ExitAdapter
|
17
17
|
def task_abort(msg)
|
18
|
-
|
19
|
-
raise Kettle::Dev::Error, msg
|
20
|
-
else
|
21
|
-
Kettle::Dev::ExitAdapter.abort(msg)
|
22
|
-
end
|
18
|
+
raise Kettle::Dev::Error, msg
|
23
19
|
end
|
24
20
|
|
25
21
|
# Runs `act` for a selected workflow. Option can be a short code or workflow basename.
|
@@ -6,13 +6,11 @@ module Kettle
|
|
6
6
|
module InstallTask
|
7
7
|
module_function
|
8
8
|
|
9
|
-
# Abort wrapper that avoids terminating the
|
9
|
+
# Abort wrapper that avoids terminating the current rake task process.
|
10
|
+
# Always raise Kettle::Dev::Error so callers can decide whether to handle
|
11
|
+
# it without terminating the process (e.g., in tests or non-interactive runs).
|
10
12
|
def task_abort(msg)
|
11
|
-
|
12
|
-
raise Kettle::Dev::Error, msg
|
13
|
-
else
|
14
|
-
Kettle::Dev::ExitAdapter.abort(msg)
|
15
|
-
end
|
13
|
+
raise Kettle::Dev::Error, msg
|
16
14
|
end
|
17
15
|
|
18
16
|
def run
|
@@ -10,11 +10,7 @@ module Kettle
|
|
10
10
|
|
11
11
|
# Abort wrapper that avoids terminating the entire process during specs
|
12
12
|
def task_abort(msg)
|
13
|
-
|
14
|
-
raise Kettle::Dev::Error, msg
|
15
|
-
else
|
16
|
-
Kettle::Dev::ExitAdapter.abort(msg)
|
17
|
-
end
|
13
|
+
raise Kettle::Dev::Error, msg
|
18
14
|
end
|
19
15
|
|
20
16
|
# Execute the template operation into the current project.
|
@@ -45,9 +41,21 @@ module Kettle
|
|
45
41
|
# 2) .github/**/*.yml with FUNDING.yml customizations
|
46
42
|
source_github_dir = File.join(gem_checkout_root, ".github")
|
47
43
|
if Dir.exist?(source_github_dir)
|
48
|
-
|
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")) +
|
49
46
|
Dir.glob(File.join(source_github_dir, "**", "*.yml.example"))
|
50
|
-
|
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|
|
51
59
|
src = helpers.prefer_example(orig_src)
|
52
60
|
# Destination path should never include the .example suffix.
|
53
61
|
rel = orig_src.sub(/^#{Regexp.escape(gem_checkout_root)}\/?/, "").sub(/\.example\z/, "")
|
@@ -155,6 +163,20 @@ module Kettle
|
|
155
163
|
end
|
156
164
|
end
|
157
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
|
+
|
158
180
|
# 5) spec/spec_helper.rb (no create)
|
159
181
|
dest_spec_helper = File.join(project_root, "spec/spec_helper.rb")
|
160
182
|
if File.file?(dest_spec_helper)
|
@@ -351,16 +373,20 @@ module Kettle
|
|
351
373
|
end
|
352
374
|
|
353
375
|
files_to_copy = %w[
|
376
|
+
.aiignore
|
354
377
|
.envrc
|
355
378
|
.gitignore
|
356
379
|
.gitlab-ci.yml
|
380
|
+
.junie/guidelines-rbs.md
|
381
|
+
.junie/guidelines.md
|
382
|
+
.opencollective.yml
|
357
383
|
.rspec
|
358
384
|
.rubocop.yml
|
385
|
+
.rubocop_rspec.yml
|
359
386
|
.simplecov
|
360
387
|
.tool-versions
|
361
388
|
.yard_gfm_support.rb
|
362
389
|
.yardopts
|
363
|
-
.opencollective.yml
|
364
390
|
Appraisal.root.gemfile
|
365
391
|
Appraisals
|
366
392
|
CHANGELOG.md
|
@@ -369,12 +395,10 @@ module Kettle
|
|
369
395
|
CONTRIBUTING.md
|
370
396
|
FUNDING.md
|
371
397
|
Gemfile
|
372
|
-
Rakefile
|
373
398
|
README.md
|
374
399
|
RUBOCOP.md
|
400
|
+
Rakefile
|
375
401
|
SECURITY.md
|
376
|
-
.junie/guidelines.md
|
377
|
-
.junie/guidelines-rbs.md
|
378
402
|
]
|
379
403
|
|
380
404
|
# Snapshot existing README content once (for H1 prefix preservation after write)
|