kettle-dev 1.0.20 → 1.0.21
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/.envrc +3 -0
- data/.github/dependabot.yml +2 -0
- data/.github/workflows/ancient.yml +4 -1
- data/.github/workflows/ancient.yml.example +4 -1
- data/.github/workflows/coverage.yml +1 -1
- data/.github/workflows/coverage.yml.example +1 -1
- data/.github/workflows/current.yml +4 -4
- data/.github/workflows/heads.yml +4 -4
- data/.github/workflows/jruby.yml +4 -4
- data/.github/workflows/jruby.yml.example +4 -4
- data/.github/workflows/legacy.yml +13 -5
- data/.github/workflows/style.yml +1 -1
- data/.github/workflows/supported.yml +4 -12
- data/.github/workflows/truffle.yml +27 -2
- data/.github/workflows/unlocked_deps.yml +1 -1
- data/.github/workflows/unsupported.yml +4 -4
- data/.rspec +2 -1
- data/Appraisals +5 -7
- data/Appraisals.example +3 -3
- data/CHANGELOG.md +24 -1
- data/CITATION.cff +2 -2
- data/CONTRIBUTING.md +12 -9
- data/README.md +35 -35
- data/README.md.example +22 -22
- data/Rakefile.example +1 -1
- data/gemfiles/modular/style.gemfile +12 -3
- data/gemfiles/modular/style.gemfile.example +25 -0
- data/kettle-dev.gemspec.example +1 -1
- data/lib/kettle/dev/release_cli.rb +21 -0
- data/lib/kettle/dev/tasks/template_task.rb +21 -11
- data/lib/kettle/dev/template_helpers.rb +7 -0
- data/lib/kettle/dev/version.rb +1 -1
- data/sig/kettle/dev/release_cli.rbs +1 -0
- data.tar.gz.sig +0 -0
- metadata +5 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c207c08e4e9933149728224c355077d0023be3794639f3e9eae9132207fb403b
|
4
|
+
data.tar.gz: 82c963e4d47084fdce04e9951e46b77109d782c2d206cb46b39f0f8965509a6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 422cd88655f41ceff9b98af93024ae86d107f0311238bd79630c88e576b4fc8b0e4023bd4804ec58a334e43a0c89dd21a1fc6ac4e410786298d7ed688ee28317
|
7
|
+
data.tar.gz: 36ee1bd93cc0c8422b292bbd616b277cba903feb5194cdca82167f3e4e40cce086860f76f7a5c8bb748e36e329851abbe843ebcb047cc6aed7e0ae073e80b829
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.envrc
CHANGED
@@ -34,6 +34,9 @@ export DEBUG=false # do not allow byebug statements (override in .env.local)
|
|
34
34
|
export FLOSS_CFG_FUND_DEBUG=false # extra logging to help diagnose issues (override in .env.local)
|
35
35
|
export FLOSS_CFG_FUND_LOGFILE=tmp/log/debug.log
|
36
36
|
|
37
|
+
# Concurrently developing the rubocop-lts suite?
|
38
|
+
export RUBOCOP_LTS_LOCAL=false
|
39
|
+
|
37
40
|
# .env would override anything in this file, if `dotenv` is uncommented below.
|
38
41
|
# .env is a DOCKER standard, and if we use it, it would be in deployed, or DOCKER, environments,
|
39
42
|
# and that is why we generally want to leave it commented out.
|
data/.github/dependabot.yml
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
name: MRI 2.3, 2.4, 2.5 (EOL)
|
2
2
|
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
|
3
6
|
on:
|
4
7
|
push:
|
5
8
|
branches:
|
@@ -71,7 +74,7 @@ jobs:
|
|
71
74
|
|
72
75
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
73
76
|
# We need to do this first to get appraisal installed.
|
74
|
-
# NOTE: This does not use the
|
77
|
+
# NOTE: This does not use the primary Gemfile at all.
|
75
78
|
- name: Install Root Appraisal
|
76
79
|
run: bundle
|
77
80
|
- name: Appraisal for ${{ matrix.appraisal }}
|
@@ -1,5 +1,8 @@
|
|
1
1
|
name: MRI 2.3, 2.4, 2.5 (EOL)
|
2
2
|
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
|
3
6
|
on:
|
4
7
|
push:
|
5
8
|
branches:
|
@@ -69,7 +72,7 @@ jobs:
|
|
69
72
|
|
70
73
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
71
74
|
# We need to do this first to get appraisal installed.
|
72
|
-
# NOTE: This does not use the
|
75
|
+
# NOTE: This does not use the primary Gemfile at all.
|
73
76
|
- name: Install Root Appraisal
|
74
77
|
run: bundle
|
75
78
|
- name: Appraisal for ${{ matrix.appraisal }}
|
@@ -68,7 +68,7 @@ jobs:
|
|
68
68
|
|
69
69
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
70
70
|
# We need to do this first to get appraisal installed.
|
71
|
-
# NOTE: This does not use the
|
71
|
+
# NOTE: This does not use the primary Gemfile at all.
|
72
72
|
- name: Install Root Appraisal
|
73
73
|
run: bundle
|
74
74
|
- name: Appraisal for ${{ matrix.appraisal }}
|
@@ -67,7 +67,7 @@ jobs:
|
|
67
67
|
|
68
68
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
69
69
|
# We need to do this first to get appraisal installed.
|
70
|
-
# NOTE: This does not use the
|
70
|
+
# NOTE: This does not use the primary Gemfile at all.
|
71
71
|
- name: Install Root Appraisal
|
72
72
|
run: bundle
|
73
73
|
- name: Appraisal for ${{ matrix.appraisal }}
|
@@ -1,6 +1,9 @@
|
|
1
1
|
# Targets the evergreen latest release of ruby, truffleruby, and jruby
|
2
2
|
name: Current
|
3
3
|
|
4
|
+
permissions:
|
5
|
+
contents: read
|
6
|
+
|
4
7
|
env:
|
5
8
|
K_SOUP_COV_DO: false
|
6
9
|
|
@@ -17,9 +20,6 @@ on:
|
|
17
20
|
# Allow manually triggering the workflow.
|
18
21
|
workflow_dispatch:
|
19
22
|
|
20
|
-
permissions:
|
21
|
-
contents: read
|
22
|
-
|
23
23
|
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
24
24
|
concurrency:
|
25
25
|
# The concurrency group contains the workflow name and the branch name.
|
@@ -77,7 +77,7 @@ jobs:
|
|
77
77
|
|
78
78
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
79
79
|
# We need to do this first to get appraisal installed.
|
80
|
-
# NOTE: This does not use the
|
80
|
+
# NOTE: This does not use the primary Gemfile at all.
|
81
81
|
- name: Install Root Appraisal
|
82
82
|
run: bundle
|
83
83
|
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
data/.github/workflows/heads.yml
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
name: Heads
|
2
2
|
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
|
3
6
|
env:
|
4
7
|
K_SOUP_COV_DO: false
|
5
8
|
|
@@ -16,9 +19,6 @@ on:
|
|
16
19
|
# Allow manually triggering the workflow.
|
17
20
|
workflow_dispatch:
|
18
21
|
|
19
|
-
permissions:
|
20
|
-
contents: read
|
21
|
-
|
22
22
|
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
23
23
|
concurrency:
|
24
24
|
# The concurrency group contains the workflow name and the branch name.
|
@@ -76,7 +76,7 @@ jobs:
|
|
76
76
|
|
77
77
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
78
78
|
# We need to do this first to get appraisal installed.
|
79
|
-
# NOTE: This does not use the
|
79
|
+
# NOTE: This does not use the primary Gemfile at all.
|
80
80
|
- name: Install Root Appraisal
|
81
81
|
run: bundle
|
82
82
|
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
data/.github/workflows/jruby.yml
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
name: JRuby
|
2
2
|
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
|
3
6
|
env:
|
4
7
|
K_SOUP_COV_DO: false
|
5
8
|
|
@@ -16,9 +19,6 @@ on:
|
|
16
19
|
# Allow manually triggering the workflow.
|
17
20
|
workflow_dispatch:
|
18
21
|
|
19
|
-
permissions:
|
20
|
-
contents: read
|
21
|
-
|
22
22
|
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
23
23
|
concurrency:
|
24
24
|
# The concurrency group contains the workflow name and the branch name.
|
@@ -68,7 +68,7 @@ jobs:
|
|
68
68
|
|
69
69
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
70
70
|
# We need to do this first to get appraisal installed.
|
71
|
-
# NOTE: This does not use the
|
71
|
+
# NOTE: This does not use the primary Gemfile at all.
|
72
72
|
- name: Install Root Appraisal
|
73
73
|
run: bundle
|
74
74
|
- name: Appraisal for ${{ matrix.appraisal }}
|
@@ -1,5 +1,8 @@
|
|
1
1
|
name: JRuby
|
2
2
|
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
|
3
6
|
env:
|
4
7
|
K_SOUP_COV_DO: false
|
5
8
|
|
@@ -16,9 +19,6 @@ on:
|
|
16
19
|
# Allow manually triggering the workflow.
|
17
20
|
workflow_dispatch:
|
18
21
|
|
19
|
-
permissions:
|
20
|
-
contents: read
|
21
|
-
|
22
22
|
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
23
23
|
concurrency:
|
24
24
|
# The concurrency group contains the workflow name and the branch name.
|
@@ -58,7 +58,7 @@ jobs:
|
|
58
58
|
|
59
59
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
60
60
|
# We need to do this first to get appraisal installed.
|
61
|
-
# NOTE: This does not use the
|
61
|
+
# NOTE: This does not use the primary Gemfile at all.
|
62
62
|
- name: Install Root Appraisal
|
63
63
|
run: bundle
|
64
64
|
- name: Appraisal for ${{ matrix.appraisal }}
|
@@ -1,4 +1,7 @@
|
|
1
|
-
name: MRI 3.0 (EOL)
|
1
|
+
name: MRI 3.0, 3.1 (EOL)
|
2
|
+
|
3
|
+
permissions:
|
4
|
+
contents: read
|
2
5
|
|
3
6
|
env:
|
4
7
|
K_SOUP_COV_DO: false
|
@@ -16,9 +19,6 @@ on:
|
|
16
19
|
# Allow manually triggering the workflow.
|
17
20
|
workflow_dispatch:
|
18
21
|
|
19
|
-
permissions:
|
20
|
-
contents: read
|
21
|
-
|
22
22
|
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
23
23
|
concurrency:
|
24
24
|
# The concurrency group contains the workflow name and the branch name.
|
@@ -45,6 +45,14 @@ jobs:
|
|
45
45
|
rubygems: '3.5.23'
|
46
46
|
bundler: '2.5.23'
|
47
47
|
|
48
|
+
# Ruby 3.1
|
49
|
+
- ruby: "ruby-3.1"
|
50
|
+
appraisal: "ruby-3-1"
|
51
|
+
exec_cmd: "rake test"
|
52
|
+
gemfile: "Appraisal.root"
|
53
|
+
rubygems: latest
|
54
|
+
bundler: latest
|
55
|
+
|
48
56
|
steps:
|
49
57
|
- name: Checkout
|
50
58
|
uses: actions/checkout@v5
|
@@ -59,7 +67,7 @@ jobs:
|
|
59
67
|
|
60
68
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
61
69
|
# We need to do this first to get appraisal installed.
|
62
|
-
# NOTE: This does not use the
|
70
|
+
# NOTE: This does not use the primary Gemfile at all.
|
63
71
|
- name: Install Root Appraisal
|
64
72
|
run: bundle
|
65
73
|
- name: Appraisal for ${{ matrix.appraisal }}
|
data/.github/workflows/style.yml
CHANGED
@@ -56,7 +56,7 @@ jobs:
|
|
56
56
|
|
57
57
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
58
58
|
# We need to do this first to get appraisal installed.
|
59
|
-
# NOTE: This does not use the
|
59
|
+
# NOTE: This does not use the primary Gemfile at all.
|
60
60
|
- name: Install Root Appraisal
|
61
61
|
run: bundle
|
62
62
|
- name: Appraisal for ${{ matrix.appraisal }}
|
@@ -1,5 +1,8 @@
|
|
1
1
|
name: MRI Non-EOL
|
2
2
|
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
|
3
6
|
env:
|
4
7
|
K_SOUP_COV_DO: false
|
5
8
|
|
@@ -16,9 +19,6 @@ on:
|
|
16
19
|
# Allow manually triggering the workflow.
|
17
20
|
workflow_dispatch:
|
18
21
|
|
19
|
-
permissions:
|
20
|
-
contents: read
|
21
|
-
|
22
22
|
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
23
23
|
concurrency:
|
24
24
|
# The concurrency group contains the workflow name and the branch name.
|
@@ -36,14 +36,6 @@ jobs:
|
|
36
36
|
strategy:
|
37
37
|
matrix:
|
38
38
|
include:
|
39
|
-
# Ruby 3.1
|
40
|
-
- ruby: "ruby-3.1"
|
41
|
-
appraisal: "ruby-3-1"
|
42
|
-
exec_cmd: "rake test"
|
43
|
-
gemfile: "Appraisal.root"
|
44
|
-
rubygems: latest
|
45
|
-
bundler: latest
|
46
|
-
|
47
39
|
# Ruby 3.2
|
48
40
|
- ruby: "ruby-3.2"
|
49
41
|
appraisal: "ruby-3-2"
|
@@ -74,7 +66,7 @@ jobs:
|
|
74
66
|
|
75
67
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
76
68
|
# We need to do this first to get appraisal installed.
|
77
|
-
# NOTE: This does not use the
|
69
|
+
# NOTE: This does not use the primary Gemfile at all.
|
78
70
|
- name: Install Root Appraisal
|
79
71
|
run: bundle
|
80
72
|
- name: Appraisal for ${{ matrix.ruby }} ${{ matrix.appraisal }}
|
@@ -59,10 +59,35 @@ jobs:
|
|
59
59
|
|
60
60
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
61
61
|
# We need to do this first to get appraisal installed.
|
62
|
-
# NOTE: This does not use the
|
62
|
+
# NOTE: This does not use the primary Gemfile at all.
|
63
63
|
- name: Install Root Appraisal
|
64
64
|
run: bundle
|
65
|
-
|
65
|
+
|
66
|
+
- name: "[Attempt 1] Install Root Appraisal"
|
67
|
+
id: bundleAttempt1
|
68
|
+
run: bundle
|
69
|
+
# Continue to the next step on failure
|
70
|
+
continue-on-error: true
|
71
|
+
|
72
|
+
# Effectively an automatic retry of the previous step.
|
73
|
+
- name: "[Attempt 2] Install Root Appraisal"
|
74
|
+
id: bundleAttempt2
|
75
|
+
# If bundleAttempt1 failed, try again here; Otherwise skip.
|
76
|
+
if: steps.bundleAttempt1.outcome == 'failure'
|
77
|
+
run: bundle
|
78
|
+
|
79
|
+
- name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
|
80
|
+
id: bundleAppraisalAttempt1
|
81
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
82
|
+
# Continue to the next step on failure
|
83
|
+
continue-on-error: true
|
84
|
+
|
85
|
+
# Effectively an automatic retry of the previous step.
|
86
|
+
- name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}"
|
87
|
+
id: bundleAppraisalAttempt2
|
88
|
+
# If bundleAttempt1 failed, try again here; Otherwise skip.
|
89
|
+
if: steps.bundleAppraisalAttempt1.outcome == 'failure'
|
66
90
|
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
91
|
+
|
67
92
|
- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
|
68
93
|
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
@@ -75,7 +75,7 @@ jobs:
|
|
75
75
|
|
76
76
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
77
77
|
# We need to do this first to get appraisal installed.
|
78
|
-
# NOTE: This does not use the
|
78
|
+
# NOTE: This does not use the primary Gemfile at all.
|
79
79
|
- name: Install Root Appraisal
|
80
80
|
run: bundle
|
81
81
|
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal_name }}
|
@@ -1,5 +1,8 @@
|
|
1
1
|
name: MRI 2.6 & 2.7 (EOL)
|
2
2
|
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
|
3
6
|
env:
|
4
7
|
K_SOUP_COV_DO: false
|
5
8
|
|
@@ -16,9 +19,6 @@ on:
|
|
16
19
|
# Allow manually triggering the workflow.
|
17
20
|
workflow_dispatch:
|
18
21
|
|
19
|
-
permissions:
|
20
|
-
contents: read
|
21
|
-
|
22
22
|
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
23
23
|
concurrency:
|
24
24
|
# The concurrency group contains the workflow name and the branch name.
|
@@ -67,7 +67,7 @@ jobs:
|
|
67
67
|
|
68
68
|
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
69
69
|
# We need to do this first to get appraisal installed.
|
70
|
-
# NOTE: This does not use the
|
70
|
+
# NOTE: This does not use the primary Gemfile at all.
|
71
71
|
- name: Install Root Appraisal
|
72
72
|
run: bundle
|
73
73
|
- name: Appraisal for ${{ matrix.appraisal }}
|
data/.rspec
CHANGED
data/Appraisals
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# HOW TO UPDATE APPRAISALS:
|
4
|
-
#
|
5
|
-
# BUNDLE_GEMFILE=Appraisal.root.gemfile bundle exec appraisal update
|
6
|
-
# bundle exec rake rubocop_gradual:autocorrect
|
3
|
+
# HOW TO UPDATE APPRAISALS (will run rubocop_gradual's autocorrect afterward):
|
4
|
+
# bin/rake appraisals:update
|
7
5
|
|
8
6
|
# Lock/Unlock Deps Pattern
|
9
7
|
#
|
@@ -113,14 +111,14 @@ appraise "ruby-3-3" do
|
|
113
111
|
gem "stringio", "~> 3.0"
|
114
112
|
end
|
115
113
|
|
116
|
-
# Only run security audit on latest Ruby
|
114
|
+
# Only run security audit on the latest version of Ruby
|
117
115
|
appraise "audit" do
|
118
116
|
gem "erb"
|
119
117
|
gem "mutex_m", "~> 0.2"
|
120
118
|
gem "stringio", "~> 3.0"
|
121
119
|
end
|
122
120
|
|
123
|
-
# Only run coverage on latest Ruby
|
121
|
+
# Only run coverage on the latest version of Ruby
|
124
122
|
appraise "coverage" do
|
125
123
|
gem "erb"
|
126
124
|
gem "mutex_m", "~> 0.2"
|
@@ -130,7 +128,7 @@ appraise "coverage" do
|
|
130
128
|
eval_gemfile "modular/recording/r3/recording.gemfile"
|
131
129
|
end
|
132
130
|
|
133
|
-
# Only run linter on latest Ruby
|
131
|
+
# Only run linter on the latest version of Ruby (but, in support of oldest supported Ruby version)
|
134
132
|
appraise "style" do
|
135
133
|
gem "erb"
|
136
134
|
gem "mutex_m", "~> 0.2"
|
data/Appraisals.example
CHANGED
@@ -82,13 +82,13 @@ appraise "ruby-3-3" do
|
|
82
82
|
gem "stringio", "~> 3.0"
|
83
83
|
end
|
84
84
|
|
85
|
-
# Only run security audit on latest Ruby
|
85
|
+
# Only run security audit on the latest version of Ruby
|
86
86
|
appraise "audit" do
|
87
87
|
gem "mutex_m", "~> 0.2"
|
88
88
|
gem "stringio", "~> 3.0"
|
89
89
|
end
|
90
90
|
|
91
|
-
# Only run coverage on latest Ruby
|
91
|
+
# Only run coverage on the latest version of Ruby
|
92
92
|
appraise "coverage" do
|
93
93
|
gem "mutex_m", "~> 0.2"
|
94
94
|
gem "stringio", "~> 3.0"
|
@@ -96,7 +96,7 @@ appraise "coverage" do
|
|
96
96
|
eval_gemfile "modular/optional.gemfile"
|
97
97
|
end
|
98
98
|
|
99
|
-
# Only run linter on latest Ruby
|
99
|
+
# Only run linter on the latest version of Ruby (but, in support of oldest supported Ruby version)
|
100
100
|
appraise "style" do
|
101
101
|
gem "mutex_m", "~> 0.2"
|
102
102
|
gem "stringio", "~> 3.0"
|
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.0.21] - 2025-08-30
|
28
|
+
- TAG: [v1.0.21][1.0.21t]
|
29
|
+
- COVERAGE: 97.82% -- 2375/2428 lines in 20 files
|
30
|
+
- BRANCH COVERAGE: 81.34% -- 972/1195 branches in 20 files
|
31
|
+
- 76.23% documented
|
32
|
+
### Added
|
33
|
+
- FUNDING.md in support of a funding footer on release notes
|
34
|
+
- <!-- RELEASE-NOTES-FOOTER-START -->
|
35
|
+
- <!-- RELEASE-NOTES-FOOTER-END -->
|
36
|
+
- truffle workflow: Repeat attempts for bundle install and appraisal bundle before failure
|
37
|
+
- global token replacement during kettle:dev:install
|
38
|
+
- {KETTLE|DEV|GEM} => kettle-dev
|
39
|
+
- {RUBOCOP|LTS|CONSTRAINT} => dynamic
|
40
|
+
- {RUBOCOP|RUBY|GEM} => dynamic
|
41
|
+
- default to rubocop-ruby1_8 if no minimum ruby specified
|
42
|
+
- template supports local development of RuboCop-LTS suite of gems
|
43
|
+
- improved documentation
|
44
|
+
### Changed
|
45
|
+
- dependabot: ignore rubocop-lts for updates
|
46
|
+
- template configures RSpec to run tests in random order
|
47
|
+
|
27
48
|
## [1.0.20] - 2025-08-29
|
28
49
|
- TAG: [v1.0.20][1.0.20t]
|
29
50
|
- COVERAGE: 14.01% -- 96/685 lines in 8 files
|
@@ -307,7 +328,7 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
307
328
|
- Selecting will run the selected workflow via `act`
|
308
329
|
- This may move to its own gem in the future.
|
309
330
|
|
310
|
-
[Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.0.
|
331
|
+
[Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.0.21...HEAD
|
311
332
|
[1.0.0]: https://github.com/kettle-rb/kettle-dev/compare/a427c302df09cfe4253a7c8d400333f9a4c1a208...v1.0.0
|
312
333
|
[1.0.0t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.0
|
313
334
|
[1.0.1]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.0...v1.0.1
|
@@ -350,3 +371,5 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
350
371
|
[1.0.19t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.19
|
351
372
|
[1.0.20]: https://github.com/kettle-rb/kettle-dev/compare/v1.0.19...v1.0.20
|
352
373
|
[1.0.20t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.20
|
374
|
+
[1.0.21]: https://github.com/kettle-rb/kettle-dev/compare/v1.0.20...v1.0.21
|
375
|
+
[1.0.21t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.21
|
data/CITATION.cff
CHANGED
@@ -12,9 +12,9 @@ authors:
|
|
12
12
|
orcid: 'https://orcid.org/0009-0008-8519-441X'
|
13
13
|
identifiers:
|
14
14
|
- type: url
|
15
|
-
value: 'https://github.com/kettle-rb/kettle-dev
|
15
|
+
value: 'https://github.com/kettle-rb/kettle-dev'
|
16
16
|
description: kettle-dev
|
17
|
-
repository-code: 'https://github.com/kettle-rb/kettle-dev
|
17
|
+
repository-code: 'https://github.com/kettle-rb/kettle-dev'
|
18
18
|
abstract: >-
|
19
19
|
kettle-dev
|
20
20
|
license: See license file
|
data/CONTRIBUTING.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# Contributing
|
2
2
|
|
3
|
-
Bug reports and pull requests are welcome on
|
3
|
+
Bug reports and pull requests are welcome on [CodeBerg][📜src-cb], [GitLab][📜src-gl], or [GitHub][📜src-gh].
|
4
4
|
This project should be a safe, welcoming space for collaboration, so contributors agree to adhere to
|
5
5
|
the [code of conduct][🤝conduct].
|
6
6
|
|
7
7
|
To submit a patch, please fork the project, create a patch with tests, and send a pull request.
|
8
8
|
|
9
|
-
Remember to [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog].
|
9
|
+
Remember to [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] if you make changes.
|
10
10
|
|
11
11
|
## Help out!
|
12
12
|
|
@@ -60,14 +60,14 @@ For a quick starting point, this repository’s `.envrc` shows sane defaults, an
|
|
60
60
|
|
61
61
|
## Appraisals
|
62
62
|
|
63
|
-
From time to time the
|
63
|
+
From time to time the [appraisal2][🚎appraisal2] gemfiles in `gemfiles/` will need to be updated.
|
64
64
|
They are created and updated with the commands:
|
65
65
|
|
66
66
|
```console
|
67
67
|
bin/rake appraisal:update
|
68
68
|
```
|
69
69
|
|
70
|
-
When adding an appraisal to CI check the [runner tool cache][🏃♂️runner-tool-cache] to see which runner to use.
|
70
|
+
When adding an appraisal to CI, check the [runner tool cache][🏃♂️runner-tool-cache] to see which runner to use.
|
71
71
|
|
72
72
|
## The Reek List
|
73
73
|
|
@@ -134,13 +134,13 @@ Also see GitLab Contributors: [https://gitlab.com/kettle-rb/kettle-dev/-/graphs/
|
|
134
134
|
|
135
135
|
### One-time, Per-maintainer, Setup
|
136
136
|
|
137
|
-
**IMPORTANT**:
|
138
|
-
|
137
|
+
**IMPORTANT**: To sign a build,
|
138
|
+
a public key for signing gems will need to be picked up by the line in the
|
139
139
|
`gemspec` defining the `spec.cert_chain` (check the relevant ENV variables there).
|
140
|
-
All releases to RubyGems.org
|
140
|
+
All releases to RubyGems.org are signed releases.
|
141
141
|
See: [RubyGems Security Guide][🔒️rubygems-security-guide]
|
142
142
|
|
143
|
-
NOTE: To build without signing the gem
|
143
|
+
NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in the environment.
|
144
144
|
|
145
145
|
### To release a new version:
|
146
146
|
|
@@ -175,7 +175,9 @@ Run `bundle exec kettle-release`.
|
|
175
175
|
13. Run `bundle exec rake release` which will create a git tag for the version,
|
176
176
|
push git commits and tags, and push the `.gem` file to [rubygems.org][💎rubygems]
|
177
177
|
|
178
|
-
[
|
178
|
+
[📜src-gl]: https://gitlab.com/kettle-rb/kettle-dev/
|
179
|
+
[📜src-cb]: https://codeberg.org/kettle-rb/kettle-dev
|
180
|
+
[📜src-gh]: https://github.com/kettle-rb/kettle-dev
|
179
181
|
[🧪build]: https://github.com/kettle-rb/kettle-dev/actions
|
180
182
|
[🤝conduct]: https://gitlab.com/kettle-rb/kettle-dev/-/blob/main/CODE_OF_CONDUCT.md
|
181
183
|
[🖐contrib-rocks]: https://contrib.rocks
|
@@ -191,4 +193,5 @@ Run `bundle exec kettle-release`.
|
|
191
193
|
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
|
192
194
|
[📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
|
193
195
|
[📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
|
196
|
+
[🚎appraisal2]: https://github.com/appraisal-rb/appraisal2
|
194
197
|
[🏃♂️runner-tool-cache]: https://github.com/ruby/ruby-builder/releases/tag/toolcache
|
data/README.md
CHANGED
@@ -50,19 +50,19 @@ and concordant releases of JRuby, and TruffleRuby.
|
|
50
50
|
|
51
51
|
## 💡 Info you can shake a stick at
|
52
52
|
|
53
|
-
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace]
|
54
|
-
|
55
|
-
| Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]
|
56
|
-
| Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.0 Compat][💎truby-23.0i] <br/> [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf]
|
57
|
-
| Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]
|
58
|
-
| Works with MRI Ruby 2 | [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf]
|
59
|
-
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc]
|
60
|
-
| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![Wiki][📜wiki-img]][📜wiki]
|
61
|
-
| Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver]
|
62
|
-
| Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2]
|
63
|
-
| Support | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork] [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor]
|
64
|
-
| Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼♂️devto-img]][💖💁🏼♂️devto]
|
65
|
-
| `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼♂️aboutme-img]][💖💁🏼♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab]
|
53
|
+
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
|
54
|
+
|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
55
|
+
| Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
|
56
|
+
| Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.0 Compat][💎truby-23.0i] <br/> [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] |
|
57
|
+
| Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
|
58
|
+
| Works with MRI Ruby 2 | [![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
|
59
|
+
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
|
60
|
+
| Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![Wiki][📜wiki-img]][📜wiki] |
|
61
|
+
| Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
|
62
|
+
| Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
|
63
|
+
| Support | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork] [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor] |
|
64
|
+
| Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼♂️devto-img]][💖💁🏼♂️devto] |
|
65
|
+
| `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼♂️aboutme-img]][💖💁🏼♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
|
66
66
|
|
67
67
|
### Compatibility
|
68
68
|
|
@@ -77,12 +77,12 @@ Compatible with Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby.
|
|
77
77
|
<details>
|
78
78
|
<summary>Find this repo on other forges (Coming soon!)</summary>
|
79
79
|
|
80
|
-
| Federated [DVCS][💎d-in-dvcs] Repository | Status
|
81
|
-
|
82
|
-
| 🧪 [kettle-rb/kettle-dev on GitLab][📜src-gl] | The Truth
|
83
|
-
| 🧊 [kettle-rb/kettle-dev on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate])
|
84
|
-
| 🐙 [kettle-rb/kettle-dev on GitHub][📜src-gh] | Another Mirror
|
85
|
-
| 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
|
80
|
+
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
|
81
|
+
|-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
|
82
|
+
| 🧪 [kettle-rb/kettle-dev on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜wiki] | 🏀 Tiny Matrix | ➖ |
|
83
|
+
| 🧊 [kettle-rb/kettle-dev on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
|
84
|
+
| 🐙 [kettle-rb/kettle-dev on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | [💚][gh-discussions] |
|
85
|
+
| 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
|
86
86
|
|
87
87
|
</details>
|
88
88
|
|
@@ -101,7 +101,7 @@ Compatible with Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby.
|
|
101
101
|
|
102
102
|
Alternatively:
|
103
103
|
|
104
|
-
- [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
|
104
|
+
- [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
105
105
|
- [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork]
|
106
106
|
- [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor]
|
107
107
|
|
@@ -542,35 +542,35 @@ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright
|
|
542
542
|
|
543
543
|
## 🤑 A request for help
|
544
544
|
|
545
|
-
Maintainers have teeth
|
546
|
-
After getting laid off in an RIF in March
|
547
|
-
I'm now spending ~
|
545
|
+
Maintainers have teeth and need to pay their dentists.
|
546
|
+
After getting laid off in an RIF in March and filled with many dozens of rejections,
|
547
|
+
I'm now spending ~60+ hours a week building open source tools.
|
548
548
|
I'm hoping to be able to pay for my kids' health insurance this month,
|
549
549
|
so if you value the work I am doing, I need your support.
|
550
550
|
Please consider sponsoring me or the project.
|
551
551
|
|
552
|
-
|
552
|
+
To join the community or get help 👇️ Join the Discord.
|
553
553
|
|
554
|
-
|
554
|
+
[![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
555
555
|
|
556
|
-
To
|
556
|
+
To say "thanks for maintaining such a great tool" ☝️ Join the Discord or 👇️ send money.
|
557
557
|
|
558
|
-
[![
|
558
|
+
[![Sponsor kettle-rb/kettle-dev on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay-img] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal-img]
|
559
559
|
|
560
560
|
### Please give the project a star ⭐ ♥.
|
561
561
|
|
562
562
|
Thanks for RTFM. ☺️
|
563
563
|
|
564
|
-
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611
|
564
|
+
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
|
565
565
|
[⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
|
566
566
|
[⛳liberapay]: https://liberapay.com/pboling/donate
|
567
567
|
[🖇osc-all-img]: https://img.shields.io/opencollective/all/kettle-rb
|
568
568
|
[🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/kettle-rb
|
569
569
|
[🖇osc-backers-img]: https://img.shields.io/opencollective/backers/kettle-rb
|
570
570
|
[🖇osc-backers]: https://opencollective.com/kettle-rb#backer
|
571
|
-
[🖇osc-backers-i]: https://opencollective.com/kettle-rb/backers/badge.svg
|
571
|
+
[🖇osc-backers-i]: https://opencollective.com/kettle-rb/backers/badge.svg?style=flat
|
572
572
|
[🖇osc-sponsors]: https://opencollective.com/kettle-rb#sponsor
|
573
|
-
[🖇osc-sponsors-i]: https://opencollective.com/kettle-rb/sponsors/badge.svg
|
573
|
+
[🖇osc-sponsors-i]: https://opencollective.com/kettle-rb/sponsors/badge.svg?style=flat
|
574
574
|
[🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/kettle-rb?style=for-the-badge
|
575
575
|
[🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/kettle-rb?style=for-the-badge
|
576
576
|
[🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/kettle-rb?style=for-the-badge
|
@@ -578,11 +578,11 @@ Thanks for RTFM. ☺️
|
|
578
578
|
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
|
579
579
|
[🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
|
580
580
|
[🖇sponsor]: https://github.com/sponsors/pboling
|
581
|
-
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg
|
581
|
+
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
|
582
582
|
[🖇polar]: https://polar.sh/pboling
|
583
|
-
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-✓-a51611.svg
|
583
|
+
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-✓-a51611.svg?style=flat
|
584
584
|
[🖇kofi]: https://ko-fi.com/O5O86SNP4
|
585
|
-
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg
|
585
|
+
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
|
586
586
|
[🖇patreon]: https://patreon.com/galtzo
|
587
587
|
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-a51611.svg?style=flat
|
588
588
|
[🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
|
@@ -593,7 +593,7 @@ Thanks for RTFM. ☺️
|
|
593
593
|
[🖇floss-funding.dev]: https://floss-funding.dev
|
594
594
|
[🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
|
595
595
|
[✉️discord-invite]: https://discord.gg/3qme4XHNKN
|
596
|
-
[✉️discord-invite-img]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge
|
596
|
+
[✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge
|
597
597
|
|
598
598
|
[✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
|
599
599
|
[⛳️gem-namespace]: https://github.com/kettle-rb/kettle-dev
|
@@ -735,7 +735,7 @@ Thanks for RTFM. ☺️
|
|
735
735
|
[📌gitmoji]:https://gitmoji.dev
|
736
736
|
[📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square
|
737
737
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
738
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-
|
738
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.428-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
739
739
|
[🔐security]: SECURITY.md
|
740
740
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
741
741
|
[📄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
@@ -52,12 +52,12 @@ Compatible with Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby.
|
|
52
52
|
<details>
|
53
53
|
<summary>Find this repo on other forges (Coming soon!)</summary>
|
54
54
|
|
55
|
-
| Federated [DVCS][💎d-in-dvcs] Repository | Status
|
56
|
-
|
57
|
-
| 🧪 [kettle-rb/kettle-dev on GitLab][📜src-gl] | The Truth
|
58
|
-
| 🧊 [kettle-rb/kettle-dev on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate])
|
59
|
-
| 🐙 [kettle-rb/kettle-dev on GitHub][📜src-gh] | Another Mirror
|
60
|
-
| 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
|
55
|
+
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
|
56
|
+
|-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
|
57
|
+
| 🧪 [kettle-rb/kettle-dev on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜wiki] | 🏀 Tiny Matrix | ➖ |
|
58
|
+
| 🧊 [kettle-rb/kettle-dev on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
|
59
|
+
| 🐙 [kettle-rb/kettle-dev on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | [💚][gh-discussions] |
|
60
|
+
| 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
|
61
61
|
|
62
62
|
</details>
|
63
63
|
|
@@ -76,7 +76,7 @@ Compatible with Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby.
|
|
76
76
|
|
77
77
|
Alternatively:
|
78
78
|
|
79
|
-
- [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
|
79
|
+
- [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
80
80
|
- [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork]
|
81
81
|
- [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor]
|
82
82
|
|
@@ -303,35 +303,35 @@ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright
|
|
303
303
|
|
304
304
|
## 🤑 A request for help
|
305
305
|
|
306
|
-
Maintainers have teeth
|
307
|
-
After getting laid off in an RIF in March
|
308
|
-
I'm now spending ~
|
306
|
+
Maintainers have teeth and need to pay their dentists.
|
307
|
+
After getting laid off in an RIF in March and filled with many dozens of rejections,
|
308
|
+
I'm now spending ~60+ hours a week building open source tools.
|
309
309
|
I'm hoping to be able to pay for my kids' health insurance this month,
|
310
310
|
so if you value the work I am doing, I need your support.
|
311
311
|
Please consider sponsoring me or the project.
|
312
312
|
|
313
|
-
|
313
|
+
To join the community or get help 👇️ Join the Discord.
|
314
314
|
|
315
|
-
|
315
|
+
[![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
316
316
|
|
317
|
-
To
|
317
|
+
To say "thanks for maintaining such a great tool" ☝️ Join the Discord or 👇️ send money.
|
318
318
|
|
319
|
-
[![
|
319
|
+
[![Sponsor kettle-rb/kettle-dev on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay-img] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal-img]
|
320
320
|
|
321
321
|
### Please give the project a star ⭐ ♥.
|
322
322
|
|
323
323
|
Thanks for RTFM. ☺️
|
324
324
|
|
325
|
-
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611
|
325
|
+
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
|
326
326
|
[⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
|
327
327
|
[⛳liberapay]: https://liberapay.com/pboling/donate
|
328
328
|
[🖇osc-all-img]: https://img.shields.io/opencollective/all/kettle-rb
|
329
329
|
[🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/kettle-rb
|
330
330
|
[🖇osc-backers-img]: https://img.shields.io/opencollective/backers/kettle-rb
|
331
331
|
[🖇osc-backers]: https://opencollective.com/kettle-rb#backer
|
332
|
-
[🖇osc-backers-i]: https://opencollective.com/kettle-rb/backers/badge.svg
|
332
|
+
[🖇osc-backers-i]: https://opencollective.com/kettle-rb/backers/badge.svg?style=flat
|
333
333
|
[🖇osc-sponsors]: https://opencollective.com/kettle-rb#sponsor
|
334
|
-
[🖇osc-sponsors-i]: https://opencollective.com/kettle-rb/sponsors/badge.svg
|
334
|
+
[🖇osc-sponsors-i]: https://opencollective.com/kettle-rb/sponsors/badge.svg?style=flat
|
335
335
|
[🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/kettle-rb?style=for-the-badge
|
336
336
|
[🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/kettle-rb?style=for-the-badge
|
337
337
|
[🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/kettle-rb?style=for-the-badge
|
@@ -339,11 +339,11 @@ Thanks for RTFM. ☺️
|
|
339
339
|
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
|
340
340
|
[🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
|
341
341
|
[🖇sponsor]: https://github.com/sponsors/pboling
|
342
|
-
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg
|
342
|
+
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
|
343
343
|
[🖇polar]: https://polar.sh/pboling
|
344
|
-
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-✓-a51611.svg
|
344
|
+
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-✓-a51611.svg?style=flat
|
345
345
|
[🖇kofi]: https://ko-fi.com/O5O86SNP4
|
346
|
-
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg
|
346
|
+
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
|
347
347
|
[🖇patreon]: https://patreon.com/galtzo
|
348
348
|
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-a51611.svg?style=flat
|
349
349
|
[🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
|
@@ -354,7 +354,7 @@ Thanks for RTFM. ☺️
|
|
354
354
|
[🖇floss-funding.dev]: https://floss-funding.dev
|
355
355
|
[🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
|
356
356
|
[✉️discord-invite]: https://discord.gg/3qme4XHNKN
|
357
|
-
[✉️discord-invite-img]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge
|
357
|
+
[✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge
|
358
358
|
|
359
359
|
[✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
|
360
360
|
[⛳️gem-namespace]: https://github.com/kettle-rb/kettle-dev
|
@@ -501,7 +501,7 @@ Thanks for RTFM. ☺️
|
|
501
501
|
[📌gitmoji]:https://gitmoji.dev
|
502
502
|
[📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square
|
503
503
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
504
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-
|
504
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-2.428-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
505
505
|
[🔐security]: SECURITY.md
|
506
506
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
507
507
|
[📄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
@@ -5,12 +5,21 @@
|
|
5
5
|
|
6
6
|
gem "reek", "~> 6.5"
|
7
7
|
# gem "rubocop", "~> 1.73", ">= 1.73.2" # constrained by standard
|
8
|
-
gem "rubocop-lts", "~> 10.1", ">= 10.1.1" # Linting that targets compatibility with each specific minor version of Ruby
|
9
|
-
gem "rubocop-ruby2_3", "~> 2.0", ">= 2.0.5"
|
10
8
|
gem "rubocop-packaging", "~> 0.6", ">= 0.6.0"
|
11
|
-
gem "rubocop-rspec", "~> 3.6"
|
12
9
|
gem "standard", ">= 1.50"
|
13
10
|
gem "rubocop-on-rbs", "~> 1.8" # ruby >= 3.1.0
|
14
11
|
|
15
12
|
# Std Lib extractions
|
16
13
|
gem "benchmark", "~> 0.4", ">= 0.4.1" # Removed from Std Lib in Ruby 3.5
|
14
|
+
|
15
|
+
if ENV.fetch("RUBOCOP_LTS_LOCAL", "false").casecmp("true").zero?
|
16
|
+
home = ENV["HOME"]
|
17
|
+
gem "rubocop-lts", path: "#{home}/src/rubocop-lts/rubocop-lts"
|
18
|
+
gem "rubocop-lts-rspec", path: "#{home}/src/rubocop-lts/rubocop-lts-rspec"
|
19
|
+
gem "rubocop-ruby2_3", path: "#{home}/src/rubocop-lts/rubocop-ruby2_3"
|
20
|
+
gem "standard-rubocop-lts", path: "#{home}/src/rubocop-lts/standard-rubocop-lts"
|
21
|
+
else
|
22
|
+
gem "rubocop-lts", "~> 10.0"
|
23
|
+
gem "rubocop-ruby2_3", "~> 2.0"
|
24
|
+
gem "rubocop-rspec", "~> 3.6"
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# We run rubocop on the latest version of Ruby,
|
4
|
+
# but in support of the oldest supported version of Ruby
|
5
|
+
|
6
|
+
gem "reek", "~> 6.5"
|
7
|
+
# gem "rubocop", "~> 1.73", ">= 1.73.2" # constrained by standard
|
8
|
+
gem "rubocop-packaging", "~> 0.6", ">= 0.6.0"
|
9
|
+
gem "standard", ">= 1.50"
|
10
|
+
gem "rubocop-on-rbs", "~> 1.8" # ruby >= 3.1.0
|
11
|
+
|
12
|
+
# Std Lib extractions
|
13
|
+
gem "benchmark", "~> 0.4", ">= 0.4.1" # Removed from Std Lib in Ruby 3.5
|
14
|
+
|
15
|
+
if ENV.fetch("RUBOCOP_LTS_LOCAL", "false").casecmp("true").zero?
|
16
|
+
home = ENV["HOME"]
|
17
|
+
gem "rubocop-lts", path: "#{home}/src/rubocop-lts/rubocop-lts"
|
18
|
+
gem "rubocop-lts-rspec", path: "#{home}/src/rubocop-lts/rubocop-lts-rspec"
|
19
|
+
gem "{RUBOCOP|RUBY|GEM}", path: "#{home}/src/rubocop-lts/{RUBOCOP|RUBY|GEM}"
|
20
|
+
gem "standard-rubocop-lts", path: "#{home}/src/rubocop-lts/standard-rubocop-lts"
|
21
|
+
else
|
22
|
+
gem "rubocop-lts", "{RUBOCOP|LTS|CONSTRAINT}"
|
23
|
+
gem "{RUBOCOP|RUBY|GEM}"
|
24
|
+
gem "rubocop-rspec", "~> 3.6"
|
25
|
+
end
|
data/kettle-dev.gemspec.example
CHANGED
@@ -115,5 +115,5 @@ Gem::Specification.new do |spec|
|
|
115
115
|
# and preferably a modular one (see gemfiles/modular/*.gemfile).
|
116
116
|
|
117
117
|
# Dev, Test, & Release Tasks
|
118
|
-
spec.add_development_dependency("
|
118
|
+
spec.add_development_dependency("{KETTLE|DEV|GEM}", "~> 1.0.17") # ruby >= 2.3.0
|
119
119
|
end
|
@@ -945,6 +945,9 @@ module Kettle
|
|
945
945
|
body << "\n\n"
|
946
946
|
body << compare_ref if compare_ref
|
947
947
|
body << tag_ref if tag_ref
|
948
|
+
# Append funding footer from FUNDING.md if present
|
949
|
+
footer = extract_release_notes_footer
|
950
|
+
body << "\n" << footer if footer && !footer.strip.empty?
|
948
951
|
|
949
952
|
tag = "v#{version}"
|
950
953
|
puts "Creating GitHub release #{owner}/#{repo} #{tag}..."
|
@@ -985,6 +988,24 @@ module Kettle
|
|
985
988
|
[nil, nil, nil]
|
986
989
|
end
|
987
990
|
|
991
|
+
def extract_release_notes_footer
|
992
|
+
path = File.join(@root, "FUNDING.md")
|
993
|
+
return unless File.file?(path)
|
994
|
+
content = File.read(path)
|
995
|
+
start_tag = "<!-- RELEASE-NOTES-FOOTER-START -->"
|
996
|
+
end_tag = "<!-- RELEASE-NOTES-FOOTER-END -->"
|
997
|
+
s = content.index(start_tag)
|
998
|
+
e = content.index(end_tag)
|
999
|
+
return unless s && e && e > s
|
1000
|
+
# Extract between tags, excluding the tags themselves
|
1001
|
+
block = content[(s + start_tag.length)...e]
|
1002
|
+
# Normalize: trim trailing whitespace but keep internal formatting
|
1003
|
+
block = block.lstrip # drop leading newline/space
|
1004
|
+
block.rstrip
|
1005
|
+
rescue StandardError
|
1006
|
+
nil
|
1007
|
+
end
|
1008
|
+
|
988
1009
|
# POST to GitHub Releases API
|
989
1010
|
# Returns [ok(Boolean), message(String)]
|
990
1011
|
def github_create_release(owner:, repo:, token:, tag:, title:, body:)
|
@@ -103,7 +103,7 @@ module Kettle
|
|
103
103
|
helpers.copy_file_with_prompt(src, dest, allow_create: true, allow_replace: true) do |content|
|
104
104
|
# Adjust rubocop-lts constraint based on min_ruby
|
105
105
|
version_map = [
|
106
|
-
[Gem::Version.new("1.8"), "~> 0.
|
106
|
+
[Gem::Version.new("1.8"), "~> 0.1"],
|
107
107
|
[Gem::Version.new("1.9"), "~> 2.0"],
|
108
108
|
[Gem::Version.new("2.0"), "~> 4.0"],
|
109
109
|
[Gem::Version.new("2.1"), "~> 6.0"],
|
@@ -120,26 +120,35 @@ module Kettle
|
|
120
120
|
[Gem::Version.new("3.4"), "~> 28.0"],
|
121
121
|
]
|
122
122
|
new_constraint = nil
|
123
|
+
rubocop_ruby_gem_version = nil
|
124
|
+
ruby1_8 = version_map.first
|
123
125
|
begin
|
124
126
|
if min_ruby && !min_ruby.empty?
|
125
127
|
v = Gem::Version.new(min_ruby.split(".")[0, 2].join("."))
|
126
128
|
version_map.reverse_each do |min, req|
|
127
129
|
if v >= min
|
128
130
|
new_constraint = req
|
131
|
+
rubocop_ruby_gem_version = min.segments.join("_")
|
129
132
|
break
|
130
133
|
end
|
131
134
|
end
|
132
135
|
end
|
136
|
+
if !new_constraint || !rubocop_ruby_gem_version
|
137
|
+
# A gem with no declared minimum ruby is effectively >= 1.8.7
|
138
|
+
new_constraint = ruby1_8[1]
|
139
|
+
rubocop_ruby_gem_version = ruby1_8[0].segments.join("_")
|
140
|
+
end
|
133
141
|
rescue StandardError
|
134
|
-
#
|
142
|
+
# ignore, use default
|
143
|
+
ensure
|
144
|
+
new_constraint ||= ruby1_8[1]
|
145
|
+
rubocop_ruby_gem_version ||= ruby1_8[0].segments.join("_")
|
135
146
|
end
|
136
|
-
if new_constraint
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
else
|
142
|
-
content
|
147
|
+
if new_constraint && rubocop_ruby_gem_version
|
148
|
+
token = "{RUBOCOP|LTS|CONSTRAINT}"
|
149
|
+
content.gsub!(token, new_constraint) if content.include?(token)
|
150
|
+
token = "{RUBOCOP|RUBY|GEM}"
|
151
|
+
content.gsub!(token, "rubocop-ruby#{rubocop_ruby_gem_version}") if content.include?(token)
|
143
152
|
end
|
144
153
|
end
|
145
154
|
else
|
@@ -228,6 +237,7 @@ module Kettle
|
|
228
237
|
CITATION.cff
|
229
238
|
CODE_OF_CONDUCT.md
|
230
239
|
CONTRIBUTING.md
|
240
|
+
FUNDING.md
|
231
241
|
Gemfile
|
232
242
|
Rakefile
|
233
243
|
README.md
|
@@ -425,11 +435,11 @@ module Kettle
|
|
425
435
|
|
426
436
|
c
|
427
437
|
end
|
428
|
-
elsif ["CHANGELOG.md", "CITATION.cff", "CONTRIBUTING.md", ".opencollective.yml", ".junie/guidelines.md"].include?(rel)
|
438
|
+
elsif ["CHANGELOG.md", "CITATION.cff", "CONTRIBUTING.md", ".opencollective.yml", "FUNDING.md", ".junie/guidelines.md"].include?(rel)
|
429
439
|
helpers.copy_file_with_prompt(src, dest, allow_create: true, allow_replace: true) do |content|
|
430
440
|
c = helpers.apply_common_replacements(
|
431
441
|
content,
|
432
|
-
org: ((File.basename(rel) == ".opencollective.yml") ? funding_org : forge_org),
|
442
|
+
org: ((File.basename(rel) == ".opencollective.yml" || File.basename(rel) == "FUNDING.md") ? funding_org : forge_org),
|
433
443
|
gem_name: gem_name,
|
434
444
|
namespace: namespace,
|
435
445
|
namespace_shield: namespace_shield,
|
@@ -190,6 +190,13 @@ module Kettle
|
|
190
190
|
|
191
191
|
content = File.read(src_path)
|
192
192
|
content = yield(content) if block_given?
|
193
|
+
# Final global replacements that must occur AFTER normal replacements
|
194
|
+
begin
|
195
|
+
token = "{KETTLE|DEV|GEM}"
|
196
|
+
content = content.gsub(token, "kettle-dev") if content.include?(token)
|
197
|
+
rescue StandardError
|
198
|
+
# If replacement fails unexpectedly, proceed with content as-is
|
199
|
+
end
|
193
200
|
write_file(dest_path, content)
|
194
201
|
record_template_result(dest_path, dest_exists ? :replace : :create)
|
195
202
|
puts "Wrote #{dest_path}"
|
data/lib/kettle/dev/version.rb
CHANGED
@@ -14,6 +14,7 @@ module Kettle
|
|
14
14
|
def collapse_years: (::_ToA[Integer] enum) -> String
|
15
15
|
def reformat_copyright_year_lines!: (String path) -> void
|
16
16
|
def inject_years_into_file!: (String path, ::Set[Integer] years_set) -> void
|
17
|
+
def extract_release_notes_footer: () -> String?
|
17
18
|
end
|
18
19
|
end
|
19
20
|
end
|
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.0.
|
4
|
+
version: 1.0.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter H. Boling
|
@@ -290,6 +290,7 @@ files:
|
|
290
290
|
- gemfiles/modular/optional.gemfile
|
291
291
|
- gemfiles/modular/optional.gemfile.example
|
292
292
|
- gemfiles/modular/style.gemfile
|
293
|
+
- gemfiles/modular/style.gemfile.example
|
293
294
|
- kettle-dev.gemspec.example
|
294
295
|
- lib/kettle-dev.rb
|
295
296
|
- lib/kettle/dev.rb
|
@@ -344,10 +345,10 @@ licenses:
|
|
344
345
|
- MIT
|
345
346
|
metadata:
|
346
347
|
homepage_uri: https://kettle-dev.galtzo.com/
|
347
|
-
source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.0.
|
348
|
-
changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.0.
|
348
|
+
source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.0.21
|
349
|
+
changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.0.21/CHANGELOG.md
|
349
350
|
bug_tracker_uri: https://github.com/kettle-rb/kettle-dev/issues
|
350
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.0.
|
351
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.0.21
|
351
352
|
funding_uri: https://github.com/sponsors/pboling
|
352
353
|
wiki_uri: https://github.com/kettle-rb/kettle-dev/wiki
|
353
354
|
news_uri: https://www.railsbling.com/tags/kettle-dev
|
metadata.gz.sig
CHANGED
Binary file
|