kettle-dev 1.1.47 → 1.1.49
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 +4 -4
- data/.envrc +2 -2
- data/.github/workflows/coverage.yml +3 -4
- data/.junie/guidelines.md +5 -5
- data/.junie/guidelines.md.example +5 -6
- data/.rubocop_rspec.yml +1 -1
- data/.yardopts +5 -4
- data/Appraisals +2 -0
- data/CHANGELOG.md +29 -1
- data/FUNDING.md +5 -8
- data/FUNDING.md.no-osc.example +6 -9
- data/README.md +9 -8
- data/README.md.example +7 -8
- data/README.md.no-osc.example +6 -7
- data/Rakefile.example +1 -1
- data/gemfiles/modular/documentation.gemfile +5 -4
- data/lib/kettle/dev/ci_monitor.rb +2 -0
- data/lib/kettle/dev/template_helpers.rb +86 -6
- data/lib/kettle/dev/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +4 -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: f95a45a4ef2762a84b2f36e6824a97e34c050368c6125f74b41efcabd2465549
|
|
4
|
+
data.tar.gz: 49899dfdd780feb8134b5999aad8c3e5230361b70e8e99caf4d3529e1e46387e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 85cb8912a3fc282d2985c901635ed57336e195cc98fad631931bb04488623f5274c057b9b7c55ab24bb1a4ea256dd2c3ec48b95010403bb3b697297c838822d5
|
|
7
|
+
data.tar.gz: ee8ffd0f7f5bbc36c5d81bc2dc122666a10dd7b4c4b50f34c79fc5e65308354e28e980466af60e95d5d99527412428d161147ee9a2f71f00967d59f9c1468e96
|
checksums.yaml.gz.sig
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
|� �K� �O��nE�G����@�����*Й����Z�;�����D�=P[Ec�M��1�؝^�!MWΎ�A��f�a
|
|
2
|
+
��>V)<
|
|
3
|
+
���Q#�|�c��jOE|3��J����{˔x��W��ې�:0�"�?���|IrM��ks�Z���~+���8TTD��M*��Igc���M���^�ԖD�� z�e�|5)�� �s�5{����UC��H���ŕ�a�r�ULN�����N]�����*���{�� _�8�w���X�����-�#{;ǰ"��v�y�|��g/��������zdr�K��;���X'����\�Ѩ������
|
|
4
|
+
��oWj�� �
|
data/.envrc
CHANGED
|
@@ -21,8 +21,8 @@ export K_SOUP_COV_DO=true # Means you want code coverage
|
|
|
21
21
|
export K_SOUP_COV_COMMAND_NAME="Test Coverage"
|
|
22
22
|
# Available formats are html, xml, rcov, lcov, json, tty
|
|
23
23
|
export K_SOUP_COV_FORMATTERS="html,xml,rcov,lcov,json,tty"
|
|
24
|
-
export K_SOUP_COV_MIN_BRANCH=
|
|
25
|
-
export K_SOUP_COV_MIN_LINE=
|
|
24
|
+
export K_SOUP_COV_MIN_BRANCH=77 # Means you want to enforce X% branch coverage
|
|
25
|
+
export K_SOUP_COV_MIN_LINE=92 # Means you want to enforce X% line coverage
|
|
26
26
|
export K_SOUP_COV_MIN_HARD=true # Means you want the build to fail if the coverage thresholds are not met
|
|
27
27
|
export K_SOUP_COV_MULTI_FORMATTERS=true
|
|
28
28
|
export K_SOUP_COV_OPEN_BIN= # Means don't try to open coverage results in browser
|
|
@@ -6,9 +6,8 @@ permissions:
|
|
|
6
6
|
id-token: write
|
|
7
7
|
|
|
8
8
|
env:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
K_SOUP_COV_MIN_LINE: 93
|
|
9
|
+
K_SOUP_COV_MIN_BRANCH: 77
|
|
10
|
+
K_SOUP_COV_MIN_LINE: 92
|
|
12
11
|
K_SOUP_COV_MIN_HARD: true
|
|
13
12
|
K_SOUP_COV_FORMATTERS: "xml,rcov,lcov,tty"
|
|
14
13
|
K_SOUP_COV_DO: true
|
|
@@ -116,7 +115,7 @@ jobs:
|
|
|
116
115
|
hide_complexity: true
|
|
117
116
|
indicators: true
|
|
118
117
|
output: both
|
|
119
|
-
thresholds: '
|
|
118
|
+
thresholds: '92 77'
|
|
120
119
|
continue-on-error: ${{ matrix.experimental != 'false' }}
|
|
121
120
|
|
|
122
121
|
- name: Add Coverage PR Comment
|
data/.junie/guidelines.md
CHANGED
|
@@ -47,7 +47,6 @@ This document captures project-specific knowledge to streamline setup, testing,
|
|
|
47
47
|
- RSpec 3.13 with custom spec/spec_helper.rb configuration:
|
|
48
48
|
- silent_stream: STDOUT is silenced by default for examples to keep logs clean.
|
|
49
49
|
- To explicitly test console output, tag the example or group with :check_output.
|
|
50
|
-
- Global state hygiene: Around each example, FlossFunding.namespaces and FlossFunding.silenced are snapshotted and restored to prevent cross-test pollution.
|
|
51
50
|
- DEBUG toggle: Set DEBUG=true to require 'debug' and avoid silencing output during your run.
|
|
52
51
|
- ENV seeding: The suite sets ENV["FLOSS_FUNDING_FLOSS_FUNDING"] = "Free-as-in-beer" so that the library’s own namespace is considered activated (avoids noisy warnings).
|
|
53
52
|
- Coverage: kettle-soup-cover integrates SimpleCov; .simplecov is invoked from spec_helper when enabled by Kettle::Soup::Cover::DO_COV, which is controlled by K_SOUP_COV_DO being set to true / false.
|
|
@@ -73,10 +72,11 @@ This document captures project-specific knowledge to streamline setup, testing,
|
|
|
73
72
|
- Output visibility
|
|
74
73
|
- To see STDOUT from the code under test, use the :check_output tag on the example or group.
|
|
75
74
|
Example:
|
|
76
|
-
RSpec.describe "output", :check_output do
|
|
77
|
-
it "
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
RSpec.describe "with output", :check_output do
|
|
76
|
+
it "has output" do
|
|
77
|
+
output = capture(:stderr) {kernel.warn("This is a warning")}
|
|
78
|
+
logs = [ "This is a warning\n" ]
|
|
79
|
+
expect(output).to(include(*logs))
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
82
|
- Alternatively, run with DEBUG=true to disable silencing for the entire run.
|
|
@@ -47,9 +47,7 @@ This document captures project-specific knowledge to streamline setup, testing,
|
|
|
47
47
|
- RSpec 3.13 with custom spec/spec_helper.rb configuration:
|
|
48
48
|
- silent_stream: STDOUT is silenced by default for examples to keep logs clean.
|
|
49
49
|
- To explicitly test console output, tag the example or group with :check_output.
|
|
50
|
-
- Global state hygiene: Around each example, FlossFunding.namespaces and FlossFunding.silenced are snapshotted and restored to prevent cross-test pollution.
|
|
51
50
|
- DEBUG toggle: Set DEBUG=true to require 'debug' and avoid silencing output during your run.
|
|
52
|
-
- ENV seeding: The suite sets ENV["FLOSS_FUNDING_FLOSS_FUNDING"] = "Free-as-in-beer" so that the library’s own namespace is considered activated (avoids noisy warnings).
|
|
53
51
|
- Coverage: kettle-soup-cover integrates SimpleCov; .simplecov is invoked from spec_helper when enabled by Kettle::Soup::Cover::DO_COV, which is controlled by K_SOUP_COV_DO being set to true / false.
|
|
54
52
|
- RSpec.describe usage:
|
|
55
53
|
- Use `describe "#<method_name>"` to contain a block of specs that test instance method behavior.
|
|
@@ -73,10 +71,11 @@ This document captures project-specific knowledge to streamline setup, testing,
|
|
|
73
71
|
- Output visibility
|
|
74
72
|
- To see STDOUT from the code under test, use the :check_output tag on the example or group.
|
|
75
73
|
Example:
|
|
76
|
-
RSpec.describe "output", :check_output do
|
|
77
|
-
it "
|
|
78
|
-
|
|
79
|
-
|
|
74
|
+
RSpec.describe "with output", :check_output do
|
|
75
|
+
it "has output" do
|
|
76
|
+
output = capture(:stderr) {kernel.warn("This is a warning")}
|
|
77
|
+
logs = [ "This is a warning\n" ]
|
|
78
|
+
expect(output).to(include(*logs))
|
|
80
79
|
end
|
|
81
80
|
end
|
|
82
81
|
- Alternatively, run with DEBUG=true to disable silencing for the entire run.
|
data/.rubocop_rspec.yml
CHANGED
data/.yardopts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
--plugin fence
|
|
2
|
+
-e yard/fence/hoist.rb
|
|
1
3
|
--plugin junk
|
|
2
4
|
--plugin relative_markdown_links
|
|
3
|
-
--readme README.md
|
|
5
|
+
--readme tmp/yard-fence/README.md
|
|
4
6
|
--charset utf-8
|
|
5
7
|
--markup markdown
|
|
6
8
|
--output docs
|
|
7
|
-
--load .yard_gfm_support.rb
|
|
8
9
|
'lib/**/*.rb'
|
|
9
10
|
-
|
|
10
|
-
'
|
|
11
|
-
'
|
|
11
|
+
'tmp/yard-fence/*.md'
|
|
12
|
+
'tmp/yard-fence/*.txt'
|
data/Appraisals
CHANGED
|
@@ -136,6 +136,8 @@ appraise "coverage" do
|
|
|
136
136
|
eval_gemfile "modular/optional.gemfile"
|
|
137
137
|
eval_gemfile "modular/recording/r3/recording.gemfile"
|
|
138
138
|
eval_gemfile "modular/x_std_libs.gemfile"
|
|
139
|
+
# Normally style is included in coverage runs only, but we need it for the test suite to get full coverage
|
|
140
|
+
eval_gemfile "modular/style.gemfile"
|
|
139
141
|
# Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
|
|
140
142
|
# eval_gemfile "modular/injected.gemfile"
|
|
141
143
|
end
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,30 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [1.1.49] - 2025-11-07
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.1.49][1.1.49t]
|
|
36
|
+
- COVERAGE: 94.39% -- 4038/4278 lines in 26 files
|
|
37
|
+
- BRANCH COVERAGE: 78.93% -- 1663/2107 branches in 26 files
|
|
38
|
+
- 79.89% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- yard-fence for handling braces in fenced code blocks in yard docs
|
|
43
|
+
- Improved documentation
|
|
44
|
+
|
|
45
|
+
## [1.1.48] - 2025-11-06
|
|
46
|
+
|
|
47
|
+
- TAG: [v1.1.48][1.1.48t]
|
|
48
|
+
- COVERAGE: 94.39% -- 4038/4278 lines in 26 files
|
|
49
|
+
- BRANCH COVERAGE: 78.93% -- 1663/2107 branches in 26 files
|
|
50
|
+
- 79.89% documented
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
|
|
54
|
+
- Typo in markdown link
|
|
55
|
+
- Handling of pre-existing gemfile
|
|
56
|
+
|
|
33
57
|
## [1.1.47] - 2025-11-06
|
|
34
58
|
|
|
35
59
|
- TAG: [v1.1.47][1.1.47t]
|
|
@@ -1283,7 +1307,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
1283
1307
|
- Selecting will run the selected workflow via `act`
|
|
1284
1308
|
- This may move to its own gem in the future.
|
|
1285
1309
|
|
|
1286
|
-
[Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.
|
|
1310
|
+
[Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.49...HEAD
|
|
1311
|
+
[1.1.49]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.48...v1.1.49
|
|
1312
|
+
[1.1.49t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.49
|
|
1313
|
+
[1.1.48]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.47...v1.1.48
|
|
1314
|
+
[1.1.48t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.48
|
|
1287
1315
|
[1.1.47]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.46...v1.1.47
|
|
1288
1316
|
[1.1.47t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.47
|
|
1289
1317
|
[1.1.46]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.45...v1.1.46
|
data/FUNDING.md
CHANGED
|
@@ -31,11 +31,11 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such
|
|
|
31
31
|
|
|
32
32
|
<!-- RELEASE-NOTES-FOOTER-END -->
|
|
33
33
|
|
|
34
|
-
# 🤑
|
|
34
|
+
# 🤑 A request for help
|
|
35
35
|
|
|
36
36
|
Maintainers have teeth and need to pay their dentists.
|
|
37
|
-
After getting laid off in an RIF in March and
|
|
38
|
-
I
|
|
37
|
+
After getting laid off in an RIF in March, and encountering difficulty finding a new one,
|
|
38
|
+
I began spending most of my time building open source tools.
|
|
39
39
|
I'm hoping to be able to pay for my kids' health insurance this month,
|
|
40
40
|
so if you value the work I am doing, I need your support.
|
|
41
41
|
Please consider sponsoring me or the project.
|
|
@@ -44,16 +44,13 @@ To join the community or get help 👇️ Join the Discord.
|
|
|
44
44
|
|
|
45
45
|
[![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
46
46
|
|
|
47
|
-
To say "thanks
|
|
47
|
+
To say "thanks!" ☝️ Join the Discord or 👇️ send money.
|
|
48
48
|
|
|
49
49
|
[![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] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
|
|
50
50
|
|
|
51
51
|
# Another Way to Support Open Source Software
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
>—Anne Frank
|
|
55
|
-
|
|
56
|
-
I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions — totaling 79 hours of FLOSS coding over just the past seven days, a pretty regular week for me. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈 cats).
|
|
53
|
+
I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈 cats).
|
|
57
54
|
|
|
58
55
|
If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
|
|
59
56
|
|
data/FUNDING.md.no-osc.example
CHANGED
|
@@ -27,11 +27,11 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such
|
|
|
27
27
|
|
|
28
28
|
<!-- RELEASE-NOTES-FOOTER-END -->
|
|
29
29
|
|
|
30
|
-
# 🤑
|
|
30
|
+
# 🤑 A request for help
|
|
31
31
|
|
|
32
32
|
Maintainers have teeth and need to pay their dentists.
|
|
33
|
-
After getting laid off in an RIF in March and
|
|
34
|
-
I
|
|
33
|
+
After getting laid off in an RIF in March, and encountering difficulty finding a new one,
|
|
34
|
+
I began spending most of my time building open source tools.
|
|
35
35
|
I'm hoping to be able to pay for my kids' health insurance this month,
|
|
36
36
|
so if you value the work I am doing, I need your support.
|
|
37
37
|
Please consider sponsoring me or the project.
|
|
@@ -40,16 +40,13 @@ To join the community or get help 👇️ Join the Discord.
|
|
|
40
40
|
|
|
41
41
|
[![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
42
42
|
|
|
43
|
-
To say "thanks
|
|
43
|
+
To say "thanks!" ☝️ Join the Discord or 👇️ send money.
|
|
44
44
|
|
|
45
|
-
[![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay
|
|
45
|
+
[![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
|
|
46
46
|
|
|
47
47
|
# Another Way to Support Open Source Software
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
>—Anne Frank
|
|
51
|
-
|
|
52
|
-
I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions — totaling 79 hours of FLOSS coding over just the past seven days, a pretty regular week for me. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈 cats).
|
|
49
|
+
I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈 cats).
|
|
53
50
|
|
|
54
51
|
If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
|
|
55
52
|
|
data/README.md
CHANGED
|
@@ -54,6 +54,8 @@ Run the one-time project bootstrapper:
|
|
|
54
54
|
|
|
55
55
|
```console
|
|
56
56
|
kettle-dev-setup
|
|
57
|
+
# Or if your middle name is "danger":
|
|
58
|
+
# kettle-dev-setup --allowed=true --force
|
|
57
59
|
```
|
|
58
60
|
|
|
59
61
|
This gem integrates tightly with [kettle-test](https://github.com/kettle-rb/kettle-test).
|
|
@@ -106,7 +108,7 @@ Compatible with MRI Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby
|
|
|
106
108
|
|
|
107
109
|
### Federated DVCS
|
|
108
110
|
|
|
109
|
-
<details>
|
|
111
|
+
<details markdown="1">
|
|
110
112
|
<summary>Find this repo on federated forges (Coming soon!)</summary>
|
|
111
113
|
|
|
112
114
|
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
|
|
@@ -124,7 +126,7 @@ Compatible with MRI Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby
|
|
|
124
126
|
|
|
125
127
|
Available as part of the Tidelift Subscription.
|
|
126
128
|
|
|
127
|
-
<details>
|
|
129
|
+
<details markdown="1">
|
|
128
130
|
<summary>Need enterprise-level guarantees?</summary>
|
|
129
131
|
|
|
130
132
|
The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
|
|
@@ -159,7 +161,7 @@ gem install kettle-dev
|
|
|
159
161
|
|
|
160
162
|
### 🔒 Secure Installation
|
|
161
163
|
|
|
162
|
-
<details>
|
|
164
|
+
<details markdown="1">
|
|
163
165
|
<summary>For Medium or High Security Installations</summary>
|
|
164
166
|
|
|
165
167
|
This gem is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
|
|
@@ -728,12 +730,11 @@ For example:
|
|
|
728
730
|
spec.add_dependency("kettle-dev", "~> 1.0")
|
|
729
731
|
```
|
|
730
732
|
|
|
731
|
-
<details>
|
|
733
|
+
<details markdown="1">
|
|
732
734
|
<summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
|
|
733
735
|
|
|
734
736
|
SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
|
|
735
|
-
is a *breaking change* to an API.
|
|
736
|
-
It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
|
|
737
|
+
is a *breaking change* to an API, and for that reason the bike shedding is endless.
|
|
737
738
|
|
|
738
739
|
To get a better understanding of how SemVer is intended to work over a project's lifetime,
|
|
739
740
|
read this article from the creator of SemVer:
|
|
@@ -964,10 +965,10 @@ Thanks for RTFM. ☺️
|
|
|
964
965
|
[📌changelog]: CHANGELOG.md
|
|
965
966
|
[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
|
|
966
967
|
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
|
|
967
|
-
[📌gitmoji]:https://gitmoji.dev
|
|
968
|
+
[📌gitmoji]: https://gitmoji.dev
|
|
968
969
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
969
970
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
970
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.
|
|
971
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.278-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
971
972
|
[🔐security]: SECURITY.md
|
|
972
973
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
973
974
|
[📄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
|
@@ -78,7 +78,7 @@ Compatible with MRI Ruby {K_D_MIN_RUBY}+, and concordant releases of JRuby, and
|
|
|
78
78
|
|
|
79
79
|
### Federated DVCS
|
|
80
80
|
|
|
81
|
-
<details>
|
|
81
|
+
<details markdown="1">
|
|
82
82
|
<summary>Find this repo on federated forges (Coming soon!)</summary>
|
|
83
83
|
|
|
84
84
|
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
|
|
@@ -96,7 +96,7 @@ Compatible with MRI Ruby {K_D_MIN_RUBY}+, and concordant releases of JRuby, and
|
|
|
96
96
|
|
|
97
97
|
Available as part of the Tidelift Subscription.
|
|
98
98
|
|
|
99
|
-
<details>
|
|
99
|
+
<details markdown="1">
|
|
100
100
|
<summary>Need enterprise-level guarantees?</summary>
|
|
101
101
|
|
|
102
102
|
The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
|
|
@@ -131,7 +131,7 @@ gem install kettle-dev
|
|
|
131
131
|
|
|
132
132
|
### 🔒 Secure Installation
|
|
133
133
|
|
|
134
|
-
<details>
|
|
134
|
+
<details markdown="1">
|
|
135
135
|
<summary>For Medium or High Security Installations</summary>
|
|
136
136
|
|
|
137
137
|
This gem is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
|
|
@@ -301,12 +301,11 @@ For example:
|
|
|
301
301
|
spec.add_dependency("kettle-dev", "~> 1.0")
|
|
302
302
|
```
|
|
303
303
|
|
|
304
|
-
<details>
|
|
304
|
+
<details markdown="1">
|
|
305
305
|
<summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
|
|
306
306
|
|
|
307
307
|
SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
|
|
308
|
-
is a *breaking change* to an API.
|
|
309
|
-
It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
|
|
308
|
+
is a *breaking change* to an API, and for that reason the bike shedding is endless.
|
|
310
309
|
|
|
311
310
|
To get a better understanding of how SemVer is intended to work over a project's lifetime,
|
|
312
311
|
read this article from the creator of SemVer:
|
|
@@ -542,10 +541,10 @@ Thanks for RTFM. ☺️
|
|
|
542
541
|
[📌changelog]: CHANGELOG.md
|
|
543
542
|
[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
|
|
544
543
|
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
|
|
545
|
-
[📌gitmoji]:https://gitmoji.dev
|
|
544
|
+
[📌gitmoji]: https://gitmoji.dev
|
|
546
545
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
547
546
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
548
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.
|
|
547
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.278-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
549
548
|
[🔐security]: SECURITY.md
|
|
550
549
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
551
550
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
data/README.md.no-osc.example
CHANGED
|
@@ -78,7 +78,7 @@ Compatible with MRI Ruby {K_D_MIN_RUBY}+, and concordant releases of JRuby, and
|
|
|
78
78
|
|
|
79
79
|
### Federated DVCS
|
|
80
80
|
|
|
81
|
-
<details>
|
|
81
|
+
<details markdown="1">
|
|
82
82
|
<summary>Find this repo on federated forges (Coming soon!)</summary>
|
|
83
83
|
|
|
84
84
|
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
|
|
@@ -96,7 +96,7 @@ Compatible with MRI Ruby {K_D_MIN_RUBY}+, and concordant releases of JRuby, and
|
|
|
96
96
|
|
|
97
97
|
Available as part of the Tidelift Subscription.
|
|
98
98
|
|
|
99
|
-
<details>
|
|
99
|
+
<details markdown="1">
|
|
100
100
|
<summary>Need enterprise-level guarantees?</summary>
|
|
101
101
|
|
|
102
102
|
The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
|
|
@@ -131,7 +131,7 @@ gem install kettle-dev
|
|
|
131
131
|
|
|
132
132
|
### 🔒 Secure Installation
|
|
133
133
|
|
|
134
|
-
<details>
|
|
134
|
+
<details markdown="1">
|
|
135
135
|
<summary>For Medium or High Security Installations</summary>
|
|
136
136
|
|
|
137
137
|
This gem is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
|
|
@@ -278,12 +278,11 @@ For example:
|
|
|
278
278
|
spec.add_dependency("kettle-dev", "~> 1.0")
|
|
279
279
|
```
|
|
280
280
|
|
|
281
|
-
<details>
|
|
281
|
+
<details markdown="1">
|
|
282
282
|
<summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
|
|
283
283
|
|
|
284
284
|
SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
|
|
285
|
-
is a *breaking change* to an API.
|
|
286
|
-
It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless.
|
|
285
|
+
is a *breaking change* to an API, and for that reason the bike shedding is endless.
|
|
287
286
|
|
|
288
287
|
To get a better understanding of how SemVer is intended to work over a project's lifetime,
|
|
289
288
|
read this article from the creator of SemVer:
|
|
@@ -508,7 +507,7 @@ Thanks for RTFM. ☺️
|
|
|
508
507
|
[📌changelog]: CHANGELOG.md
|
|
509
508
|
[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
|
|
510
509
|
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
|
|
511
|
-
[📌gitmoji]:https://gitmoji.dev
|
|
510
|
+
[📌gitmoji]: https://gitmoji.dev
|
|
512
511
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
513
512
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
514
513
|
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.076-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
data/Rakefile.example
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
# Documentation
|
|
4
|
-
gem "kramdown", "~> 2.5", ">= 2.5.1" # Ruby >= 2.5
|
|
5
|
-
gem "kramdown-parser-gfm", "~> 1.1" # Ruby >= 2.3
|
|
4
|
+
gem "kramdown", "~> 2.5", ">= 2.5.1", require: false # Ruby >= 2.5
|
|
5
|
+
gem "kramdown-parser-gfm", "~> 1.1", require: false # Ruby >= 2.3
|
|
6
6
|
gem "yard", "~> 0.9", ">= 0.9.37", require: false
|
|
7
|
+
gem "yard-fence", "~> 0.4", require: false # Ruby >= 3.2
|
|
7
8
|
gem "yard-junk", "~> 0.0", ">= 0.0.10", github: "pboling/yard-junk", branch: "next", require: false
|
|
8
|
-
gem "yard-relative_markdown_links", "~> 0.
|
|
9
|
+
gem "yard-relative_markdown_links", "~> 0.6", require: false
|
|
9
10
|
|
|
10
11
|
# Std Lib extractions
|
|
11
|
-
gem "rdoc", "~> 6.11"
|
|
12
|
+
gem "rdoc", "~> 6.11", require: false
|
|
@@ -66,10 +66,12 @@ module Kettle
|
|
|
66
66
|
|
|
67
67
|
# Non-aborting collection across GH and GL, returning a compact results hash.
|
|
68
68
|
# Results format:
|
|
69
|
+
# ```ruby
|
|
69
70
|
# {
|
|
70
71
|
# github: [ {workflow: "file.yml", status: "completed", conclusion: "success"|"failure"|nil, url: String} ],
|
|
71
72
|
# gitlab: { status: "success"|"failed"|"blocked"|"unknown"|nil, url: String }
|
|
72
73
|
# }
|
|
74
|
+
# ```
|
|
73
75
|
# @return [Hash]
|
|
74
76
|
def collect_all
|
|
75
77
|
results = {github: [], gitlab: nil}
|
|
@@ -353,9 +353,84 @@ module Kettle
|
|
|
353
353
|
end
|
|
354
354
|
end
|
|
355
355
|
|
|
356
|
-
#
|
|
356
|
+
# --- Handle `source` replacement/insertion ---
|
|
357
|
+
src_source_line = nil
|
|
358
|
+
src_content.each_line do |ln|
|
|
359
|
+
next if ln.strip.start_with?("#")
|
|
360
|
+
if ln =~ /^\s*source\s+['"][^'"]+['"]\s*$/
|
|
361
|
+
src_source_line = ln.rstrip + "\n"
|
|
362
|
+
break
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
dest_lines = dest_content.lines.dup
|
|
367
|
+
|
|
368
|
+
if src_source_line
|
|
369
|
+
dest_source_idx = dest_lines.index do |ln|
|
|
370
|
+
!ln.strip.start_with?("#") && ln =~ /^\s*source\s+['"][^'"]+['"]\s*$/
|
|
371
|
+
end
|
|
372
|
+
if dest_source_idx
|
|
373
|
+
dest_lines[dest_source_idx] = src_source_line
|
|
374
|
+
else
|
|
375
|
+
# Insert after any leading contiguous comment/blank block at top of file
|
|
376
|
+
insert_idx = 0
|
|
377
|
+
while insert_idx < dest_lines.length && (dest_lines[insert_idx].strip.empty? || dest_lines[insert_idx].lstrip.start_with?("#"))
|
|
378
|
+
insert_idx += 1
|
|
379
|
+
end
|
|
380
|
+
dest_lines.insert(insert_idx, src_source_line)
|
|
381
|
+
end
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
# --- Handle `git_source` replacement/insertion ---
|
|
385
|
+
# Collect non-comment git_source lines from source (preserve order)
|
|
386
|
+
src_git_lines = src_content.each_line.select { |ln| !ln.strip.start_with?("#") && ln =~ /^\s*git_source\s*\(/ }
|
|
387
|
+
if src_git_lines.any?
|
|
388
|
+
# Insert new git_source lines in the same order as they appear in the source
|
|
389
|
+
# When inserting (not replacing), place them immediately after the source line if present
|
|
390
|
+
insert_after_source_idx = dest_lines.index { |ln| !ln.strip.start_with?("#") && ln =~ /^\s*source\s+['"][^'"]+['"]\s*$/ }
|
|
391
|
+
|
|
392
|
+
# Iterate source git lines in reverse for insertion so order is preserved when inserting at same index
|
|
393
|
+
src_git_lines.reverse_each do |gln|
|
|
394
|
+
# Attempt to extract the git_source "name" (handles forms like git_source(:github) or git_source :github)
|
|
395
|
+
name_match = gln.match(/^\s*git_source\s*\(?\s*:?(\w+)\b/)
|
|
396
|
+
name = name_match ? name_match[1].to_s : nil
|
|
397
|
+
|
|
398
|
+
replaced = false
|
|
399
|
+
if name
|
|
400
|
+
# Try to find a git_source in destination with the same name
|
|
401
|
+
dest_same_idx = dest_lines.index do |dln|
|
|
402
|
+
!dln.strip.start_with?("#") && dln =~ /^\s*git_source\s*\(?\s*:?#{Regexp.escape(name)}\b/
|
|
403
|
+
end
|
|
404
|
+
if dest_same_idx
|
|
405
|
+
dest_lines[dest_same_idx] = gln.rstrip + "\n"
|
|
406
|
+
replaced = true
|
|
407
|
+
end
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
unless replaced
|
|
411
|
+
# If destination has a github git_source, replace that
|
|
412
|
+
dest_github_idx = dest_lines.index do |dln|
|
|
413
|
+
!dln.strip.start_with?("#") && dln =~ /^\s*git_source\s*\(?\s*:?github\b/
|
|
414
|
+
end
|
|
415
|
+
if dest_github_idx
|
|
416
|
+
dest_lines[dest_github_idx] = gln.rstrip + "\n"
|
|
417
|
+
else
|
|
418
|
+
# Insert below the source line if present, otherwise at top (after comments)
|
|
419
|
+
insert_idx =
|
|
420
|
+
if insert_after_source_idx
|
|
421
|
+
insert_after_source_idx + 1
|
|
422
|
+
else
|
|
423
|
+
0
|
|
424
|
+
end
|
|
425
|
+
dest_lines.insert(insert_idx, gln.rstrip + "\n")
|
|
426
|
+
end
|
|
427
|
+
end
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
# Index existing gems in destination (after potential source/git_source changes)
|
|
357
432
|
dest_gems = {}
|
|
358
|
-
|
|
433
|
+
dest_lines.join.each_line do |ln|
|
|
359
434
|
next if ln.strip.start_with?("#")
|
|
360
435
|
if (m = ln.match(gem_re))
|
|
361
436
|
dest_gems[m[1]] = true
|
|
@@ -363,12 +438,17 @@ module Kettle
|
|
|
363
438
|
end
|
|
364
439
|
|
|
365
440
|
missing = src_gems.keys.reject { |n| dest_gems.key?(n) }
|
|
366
|
-
return
|
|
441
|
+
# If nothing to change, return original destination content
|
|
442
|
+
if missing.empty? && src_source_line.nil? && src_git_lines.empty?
|
|
443
|
+
return dest_content
|
|
444
|
+
end
|
|
367
445
|
|
|
368
|
-
out =
|
|
446
|
+
out = dest_lines.join
|
|
369
447
|
out << "\n" unless out.end_with?("\n") || out.empty?
|
|
370
|
-
|
|
371
|
-
|
|
448
|
+
if missing.any?
|
|
449
|
+
out << missing.map { |n| src_gems[n] }.join("\n")
|
|
450
|
+
out << "\n"
|
|
451
|
+
end
|
|
372
452
|
out
|
|
373
453
|
rescue StandardError => e
|
|
374
454
|
Kettle::Dev.debug_error(e, __method__)
|
data/lib/kettle/dev/version.rb
CHANGED
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.
|
|
4
|
+
version: 1.1.49
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -396,10 +396,10 @@ licenses:
|
|
|
396
396
|
- MIT
|
|
397
397
|
metadata:
|
|
398
398
|
homepage_uri: https://kettle-dev.galtzo.com/
|
|
399
|
-
source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1.
|
|
400
|
-
changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1.
|
|
399
|
+
source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1.49
|
|
400
|
+
changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1.49/CHANGELOG.md
|
|
401
401
|
bug_tracker_uri: https://github.com/kettle-rb/kettle-dev/issues
|
|
402
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1.
|
|
402
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1.49
|
|
403
403
|
funding_uri: https://github.com/sponsors/pboling
|
|
404
404
|
wiki_uri: https://github.com/kettle-rb/kettle-dev/wiki
|
|
405
405
|
news_uri: https://www.railsbling.com/tags/kettle-dev
|
metadata.gz.sig
CHANGED
|
Binary file
|