kettle-dev 1.0.10 → 1.0.11
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 +1 -1
- data/.github/workflows/coverage.yml +2 -2
- data/.github/workflows/coverage.yml.example +127 -0
- data/.github/workflows/discord-notifier.yml +2 -1
- data/.github/workflows/truffle.yml +0 -8
- data/Appraisals +3 -1
- data/Appraisals.example +102 -0
- data/CHANGELOG.md +63 -29
- data/CHANGELOG.md.example +4 -4
- data/CONTRIBUTING.md +37 -1
- data/Gemfile +3 -0
- data/README.md +47 -9
- data/README.md.example +515 -0
- data/{Rakefile → Rakefile.example} +13 -27
- data/exe/kettle-changelog +401 -0
- data/exe/kettle-commit-msg +2 -0
- data/exe/kettle-readme-backers +2 -0
- data/exe/kettle-release +2 -7
- data/gemfiles/modular/optional.gemfile +5 -0
- data/lib/kettle/dev/git_adapter.rb +98 -33
- data/lib/kettle/dev/git_commit_footer.rb +1 -1
- data/lib/kettle/dev/input_adapter.rb +40 -0
- data/lib/kettle/dev/release_cli.rb +24 -22
- data/lib/kettle/dev/tasks/ci_task.rb +4 -1
- data/lib/kettle/dev/tasks/install_task.rb +313 -95
- data/lib/kettle/dev/tasks/template_task.rb +175 -73
- data/lib/kettle/dev/template_helpers.rb +61 -8
- data/lib/kettle/dev/version.rb +1 -1
- data/lib/kettle/dev/versioning.rb +68 -0
- data/sig/kettle/dev/input_adapter.rbs +8 -0
- data/sig/kettle/dev/template_helpers.rbs +3 -1
- data.tar.gz.sig +0 -0
- metadata +21 -22
- metadata.gz.sig +0 -0
- data/.gitlab-ci.yml +0 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 913b6449dd3d5d61bc20384f02a12cb6296f9cbc9e6fdc1255c1fabeb9332034
|
4
|
+
data.tar.gz: ccb5f23873871c1e152d6394b4b5b96ea73ecb5306032710c637e948e7012741
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a86a6391cdb16fff03bc84ef00a50c62a1d86d775f6527bda5693e5bc395ab45be775480037436c9a3460cc557584fc16ea35e85bdb939ff983b5db10df69fcc
|
7
|
+
data.tar.gz: d492c8141e8a4899a1c742efc3e09afa38c97fdf3c667c92d0357f5ff1e0c460b9164ad1373a03d4696bad6b8406202c247c5d471cafccf5f29ea6ac2bb81912
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/.envrc
CHANGED
@@ -21,7 +21,7 @@ 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=
|
24
|
+
export K_SOUP_COV_MIN_BRANCH=79 # Means you want to enforce X% branch coverage
|
25
25
|
export K_SOUP_COV_MIN_LINE=97 # 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
|
@@ -7,7 +7,7 @@ permissions:
|
|
7
7
|
|
8
8
|
env:
|
9
9
|
# Lower than local, which is at 100/100, because rubocop-lts isn't installed in the coverage workflow
|
10
|
-
K_SOUP_COV_MIN_BRANCH:
|
10
|
+
K_SOUP_COV_MIN_BRANCH: 74
|
11
11
|
K_SOUP_COV_MIN_LINE: 94
|
12
12
|
K_SOUP_COV_MIN_HARD: true
|
13
13
|
K_SOUP_COV_FORMATTERS: "xml,rcov,lcov,tty"
|
@@ -116,7 +116,7 @@ jobs:
|
|
116
116
|
hide_complexity: true
|
117
117
|
indicators: true
|
118
118
|
output: both
|
119
|
-
thresholds: '94
|
119
|
+
thresholds: '94 74'
|
120
120
|
continue-on-error: ${{ matrix.experimental != 'false' }}
|
121
121
|
|
122
122
|
- name: Add Coverage PR Comment
|
@@ -0,0 +1,127 @@
|
|
1
|
+
name: Test Coverage
|
2
|
+
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
pull-requests: write
|
6
|
+
id-token: write
|
7
|
+
|
8
|
+
env:
|
9
|
+
K_SOUP_COV_MIN_BRANCH: 100
|
10
|
+
K_SOUP_COV_MIN_LINE: 100
|
11
|
+
K_SOUP_COV_MIN_HARD: true
|
12
|
+
K_SOUP_COV_FORMATTERS: "xml,rcov,lcov,tty"
|
13
|
+
K_SOUP_COV_DO: true
|
14
|
+
K_SOUP_COV_MULTI_FORMATTERS: true
|
15
|
+
K_SOUP_COV_COMMAND_NAME: "Test Coverage"
|
16
|
+
|
17
|
+
on:
|
18
|
+
push:
|
19
|
+
branches:
|
20
|
+
- 'main'
|
21
|
+
- "*-stable"
|
22
|
+
tags:
|
23
|
+
- '!*' # Do not execute on tags
|
24
|
+
pull_request:
|
25
|
+
branches:
|
26
|
+
- '*'
|
27
|
+
# Allow manually triggering the workflow.
|
28
|
+
workflow_dispatch:
|
29
|
+
|
30
|
+
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
31
|
+
concurrency:
|
32
|
+
# The concurrency group contains the workflow name and the branch name.
|
33
|
+
group: "${{ github.workflow }}-${{ github.ref }}"
|
34
|
+
cancel-in-progress: true
|
35
|
+
|
36
|
+
jobs:
|
37
|
+
coverage:
|
38
|
+
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
|
39
|
+
name: Code Coverage on ${{ matrix.ruby }}@current
|
40
|
+
runs-on: ubuntu-latest
|
41
|
+
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
42
|
+
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
43
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
|
44
|
+
strategy:
|
45
|
+
fail-fast: false
|
46
|
+
matrix:
|
47
|
+
include:
|
48
|
+
# Coverage
|
49
|
+
- ruby: "ruby"
|
50
|
+
appraisal: "coverage"
|
51
|
+
exec_cmd: "rake test"
|
52
|
+
gemfile: "Appraisal.root"
|
53
|
+
rubygems: latest
|
54
|
+
bundler: latest
|
55
|
+
|
56
|
+
steps:
|
57
|
+
- name: Checkout
|
58
|
+
uses: actions/checkout@v5
|
59
|
+
|
60
|
+
- name: Setup Ruby & RubyGems
|
61
|
+
uses: ruby/setup-ruby@v1
|
62
|
+
with:
|
63
|
+
ruby-version: "${{ matrix.ruby }}"
|
64
|
+
rubygems: "${{ matrix.rubygems }}"
|
65
|
+
bundler: "${{ matrix.bundler }}"
|
66
|
+
bundler-cache: false
|
67
|
+
|
68
|
+
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
69
|
+
# We need to do this first to get appraisal installed.
|
70
|
+
# NOTE: This does not use the main Gemfile at all.
|
71
|
+
- name: Install Root Appraisal
|
72
|
+
run: bundle
|
73
|
+
- name: Appraisal for ${{ matrix.appraisal }}
|
74
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
75
|
+
- name: Tests for ${{ matrix.ruby }}@current via ${{ matrix.exec_cmd }}
|
76
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
77
|
+
|
78
|
+
# Do SaaS coverage uploads first
|
79
|
+
- name: Upload coverage to Coveralls
|
80
|
+
if: ${{ !env.ACT }}
|
81
|
+
uses: coverallsapp/github-action@master
|
82
|
+
with:
|
83
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
84
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
85
|
+
|
86
|
+
- name: Upload coverage to QLTY
|
87
|
+
if: ${{ !env.ACT }}
|
88
|
+
uses: qltysh/qlty-action/coverage@main
|
89
|
+
with:
|
90
|
+
token: ${{secrets.QLTY_COVERAGE_TOKEN}}
|
91
|
+
files: coverage/.resultset.json
|
92
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
93
|
+
|
94
|
+
# Build will fail here if coverage upload fails
|
95
|
+
# which will hopefully be noticed for the lack of code coverage comments
|
96
|
+
- name: Upload coverage to CodeCov
|
97
|
+
if: ${{ !env.ACT }}
|
98
|
+
uses: codecov/codecov-action@v5
|
99
|
+
with:
|
100
|
+
use_oidc: true
|
101
|
+
fail_ci_if_error: false # optional (default = false)
|
102
|
+
files: coverage/lcov.info,coverage/coverage.xml
|
103
|
+
verbose: true # optional (default = false)
|
104
|
+
|
105
|
+
# Then PR comments
|
106
|
+
- name: Code Coverage Summary Report
|
107
|
+
if: ${{ !env.ACT && github.event_name == 'pull_request' }}
|
108
|
+
uses: irongut/CodeCoverageSummary@v1.3.0
|
109
|
+
with:
|
110
|
+
filename: ./coverage/coverage.xml
|
111
|
+
badge: true
|
112
|
+
fail_below_min: true
|
113
|
+
format: markdown
|
114
|
+
hide_branch_rate: false
|
115
|
+
hide_complexity: true
|
116
|
+
indicators: true
|
117
|
+
output: both
|
118
|
+
thresholds: '100 100'
|
119
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
120
|
+
|
121
|
+
- name: Add Coverage PR Comment
|
122
|
+
uses: marocchino/sticky-pull-request-comment@v2
|
123
|
+
if: ${{ !env.ACT && github.event_name == 'pull_request' }}
|
124
|
+
with:
|
125
|
+
recreate: true
|
126
|
+
path: code-coverage-results.md
|
127
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
@@ -24,6 +24,7 @@ on:
|
|
24
24
|
jobs:
|
25
25
|
# This workflow contains a single job called "build"
|
26
26
|
notify:
|
27
|
+
if: false
|
27
28
|
# The type of runner that the job will run on
|
28
29
|
runs-on: ubuntu-latest
|
29
30
|
|
@@ -35,4 +36,4 @@ jobs:
|
|
35
36
|
with:
|
36
37
|
webhook: ${{ secrets.DISCORD_WEBHOOK }}
|
37
38
|
status: ${{ job.status }}
|
38
|
-
username: GitHub Actions
|
39
|
+
username: GitHub Actions
|
@@ -37,14 +37,6 @@ jobs:
|
|
37
37
|
matrix:
|
38
38
|
include:
|
39
39
|
# NOTE: truffleruby does not support upgrading rubygems.
|
40
|
-
# truffleruby-23.0 (targets Ruby 3.1 compatibility)
|
41
|
-
- ruby: "truffleruby-23.0"
|
42
|
-
appraisal: "ruby-3-1"
|
43
|
-
exec_cmd: "rake test"
|
44
|
-
gemfile: "Appraisal.root"
|
45
|
-
rubygems: default
|
46
|
-
bundler: default
|
47
|
-
|
48
40
|
# truffleruby-23.1 (targets Ruby 3.2 compatibility)
|
49
41
|
- ruby: "truffleruby-23.1"
|
50
42
|
appraisal: "ruby-3-2"
|
data/Appraisals
CHANGED
@@ -80,6 +80,7 @@ end
|
|
80
80
|
|
81
81
|
appraise "ruby-3-1" do
|
82
82
|
# all versions of git gem are incompatible with truffleruby v23.0, syntactically.
|
83
|
+
# So tests relying on the git gem are skipped, to avoid loading it.
|
83
84
|
gem "erb"
|
84
85
|
gem "mutex_m", "~> 0.2"
|
85
86
|
gem "stringio", "~> 3.0"
|
@@ -87,7 +88,7 @@ end
|
|
87
88
|
|
88
89
|
appraise "ruby-3-2" do
|
89
90
|
# all versions of git gem are incompatible with truffleruby v23.1, syntactically.
|
90
|
-
gem
|
91
|
+
# So tests relying on the git gem are skipped, to avoid loading it.
|
91
92
|
gem "erb"
|
92
93
|
gem "mutex_m", "~> 0.2"
|
93
94
|
gem "stringio", "~> 3.0"
|
@@ -112,6 +113,7 @@ appraise "coverage" do
|
|
112
113
|
gem "mutex_m", "~> 0.2"
|
113
114
|
gem "stringio", "~> 3.0"
|
114
115
|
eval_gemfile "modular/coverage.gemfile"
|
116
|
+
eval_gemfile "modular/optional.gemfile"
|
115
117
|
end
|
116
118
|
|
117
119
|
# Only run linter on latest Ruby version (but, in support of oldest supported Ruby version)
|
data/Appraisals.example
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# HOW TO UPDATE APPRAISALS:
|
4
|
+
# BUNDLE_GEMFILE=Appraisal.root.gemfile bundle
|
5
|
+
# BUNDLE_GEMFILE=Appraisal.root.gemfile bundle exec appraisal update
|
6
|
+
# bundle exec rake rubocop_gradual:autocorrect
|
7
|
+
|
8
|
+
# Lock/Unlock Deps Pattern
|
9
|
+
#
|
10
|
+
# Two often conflicting goals resolved!
|
11
|
+
#
|
12
|
+
# - unlocked_deps.yml
|
13
|
+
# - All runtime & dev dependencies, but does not have a `gemfiles/*.gemfile.lock` committed
|
14
|
+
# - Uses an Appraisal2 "unlocked_deps" gemfile, and the current MRI Ruby release
|
15
|
+
# - Know when new dependency releases will break local dev with unlocked dependencies
|
16
|
+
# - Broken workflow indicates that new releases of dependencies may not work
|
17
|
+
#
|
18
|
+
# - locked_deps.yml
|
19
|
+
# - All runtime & dev dependencies, and has a `Gemfile.lock` committed
|
20
|
+
# - Uses the project's main Gemfile, and the current MRI Ruby release
|
21
|
+
# - Matches what contributors and maintainers use locally for development
|
22
|
+
# - Broken workflow indicates that a new contributor will have a bad time
|
23
|
+
#
|
24
|
+
appraise "unlocked_deps" do
|
25
|
+
eval_gemfile "modular/coverage.gemfile"
|
26
|
+
eval_gemfile "modular/documentation.gemfile"
|
27
|
+
eval_gemfile "modular/style.gemfile"
|
28
|
+
end
|
29
|
+
|
30
|
+
# Used for head (nightly) releases of ruby, truffleruby, and jruby.
|
31
|
+
# Split into discrete appraisals if one of them needs a dependency locked discretely.
|
32
|
+
appraise "head" do
|
33
|
+
gem "mutex_m", ">= 0.2"
|
34
|
+
gem "stringio", ">= 3.0"
|
35
|
+
gem "benchmark", "~> 0.4", ">= 0.4.1"
|
36
|
+
end
|
37
|
+
|
38
|
+
# Used for current releases of ruby, truffleruby, and jruby.
|
39
|
+
# Split into discrete appraisals if one of them needs a dependency locked discretely.
|
40
|
+
appraise "current" do
|
41
|
+
gem "mutex_m", ">= 0.2"
|
42
|
+
gem "stringio", ">= 3.0"
|
43
|
+
end
|
44
|
+
|
45
|
+
appraise "ruby-2-3" do
|
46
|
+
end
|
47
|
+
|
48
|
+
appraise "ruby-2-4" do
|
49
|
+
end
|
50
|
+
|
51
|
+
appraise "ruby-2-5" do
|
52
|
+
end
|
53
|
+
|
54
|
+
appraise "ruby-2-6" do
|
55
|
+
gem "mutex_m", "~> 0.2"
|
56
|
+
gem "stringio", "~> 3.0"
|
57
|
+
end
|
58
|
+
|
59
|
+
appraise "ruby-2-7" do
|
60
|
+
gem "mutex_m", "~> 0.2"
|
61
|
+
gem "stringio", "~> 3.0"
|
62
|
+
end
|
63
|
+
|
64
|
+
appraise "ruby-3-0" do
|
65
|
+
gem "mutex_m", "~> 0.2"
|
66
|
+
gem "stringio", "~> 3.0"
|
67
|
+
end
|
68
|
+
|
69
|
+
appraise "ruby-3-1" do
|
70
|
+
gem "mutex_m", "~> 0.2"
|
71
|
+
gem "stringio", "~> 3.0"
|
72
|
+
end
|
73
|
+
|
74
|
+
appraise "ruby-3-2" do
|
75
|
+
gem "mutex_m", "~> 0.2"
|
76
|
+
gem "stringio", "~> 3.0"
|
77
|
+
end
|
78
|
+
|
79
|
+
appraise "ruby-3-3" do
|
80
|
+
gem "mutex_m", "~> 0.2"
|
81
|
+
gem "stringio", "~> 3.0"
|
82
|
+
end
|
83
|
+
|
84
|
+
# Only run security audit on latest Ruby version
|
85
|
+
appraise "audit" do
|
86
|
+
gem "mutex_m", "~> 0.2"
|
87
|
+
gem "stringio", "~> 3.0"
|
88
|
+
end
|
89
|
+
|
90
|
+
# Only run coverage on latest Ruby version
|
91
|
+
appraise "coverage" do
|
92
|
+
gem "mutex_m", "~> 0.2"
|
93
|
+
gem "stringio", "~> 3.0"
|
94
|
+
eval_gemfile "modular/coverage.gemfile"
|
95
|
+
end
|
96
|
+
|
97
|
+
# Only run linter on latest Ruby version (but, in support of oldest supported Ruby version)
|
98
|
+
appraise "style" do
|
99
|
+
gem "mutex_m", "~> 0.2"
|
100
|
+
gem "stringio", "~> 3.0"
|
101
|
+
eval_gemfile "modular/style.gemfile"
|
102
|
+
end
|
data/CHANGELOG.md
CHANGED
@@ -24,10 +24,41 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
24
24
|
### Fixed
|
25
25
|
### Security
|
26
26
|
|
27
|
+
## [1.0.11] - 2025-08-28
|
28
|
+
- TAG: [v1.0.11][1.0.11t]
|
29
|
+
- COVERAGE: 97.90% -- 1959/2001 lines in 19 files
|
30
|
+
- BRANCH COVERAGE: 79.98% -- 763/954 branches in 19 files
|
31
|
+
- 78.70% documented
|
32
|
+
### Added
|
33
|
+
- Add more .example templates
|
34
|
+
- .github/workflows/coverage.yml.example
|
35
|
+
- .gitlab-ci.yml.example
|
36
|
+
- Appraisals.example
|
37
|
+
- Kettle::Dev::InputAdapter: Input indirection layer for safe interactive prompts in tests; provides gets and readline; documented with YARD and typed with RBS.
|
38
|
+
- install task README improvements
|
39
|
+
- extracts emoji grapheme from H1 to apply to gemspec's summary and description
|
40
|
+
- removes badges for unsupported rubies, and major version MRI row if all badges removed
|
41
|
+
- new exe script: kettle-changelog - transitions a changelog from unreleased to next release
|
42
|
+
### Changed
|
43
|
+
- Make 'git' gem dependency optional; fall back to raw `git` commands when the gem is not present (rescues LoadError). See Kettle::Dev::GitAdapter.
|
44
|
+
- upgraded to stone_checksums v1.0.2
|
45
|
+
- exe scripts now print their name and version as they start up
|
46
|
+
### Removed
|
47
|
+
- dependency on git gem
|
48
|
+
- git gem is still supported if present and not bypassed by new ENV variable `KETTLE_DEV_DISABLE_GIT_GEM`
|
49
|
+
- no longer a direct dependency
|
50
|
+
### Fixed
|
51
|
+
- Upgrade stone_checksums for release compatibility with bundler v2.7+
|
52
|
+
- Retains compatibility with older bundler < v2.7
|
53
|
+
- Ship all example templates with gem
|
54
|
+
- install task README preservation
|
55
|
+
- preserves H1 line, and specific H2 headed sections
|
56
|
+
- preserve table alignment
|
57
|
+
|
27
58
|
## [1.0.10] - 2025-08-24
|
28
59
|
- TAG: [v1.0.10][1.0.10t]
|
29
|
-
- COVERAGE:
|
30
|
-
- BRANCH COVERAGE:
|
60
|
+
- COVERAGE: 97.68% -- 1685/1725 lines in 17 files
|
61
|
+
- BRANCH COVERAGE: 77.54% -- 618/797 branches in 17 files- 95.35% documented
|
31
62
|
- 77.00% documented
|
32
63
|
### Added
|
33
64
|
- runs git add --all before git commit, to ensure all files are committed.
|
@@ -58,7 +89,7 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
58
89
|
## [1.0.8] - 2025-08-24
|
59
90
|
- TAG: [v1.0.8][1.0.8t]
|
60
91
|
- COVERAGE: 100.00% -- 130/130 lines in 7 files
|
61
|
-
- BRANCH COVERAGE:
|
92
|
+
- BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files
|
62
93
|
- 95.35% documented
|
63
94
|
### Fixed
|
64
95
|
- Can't add checksums to the gem package, because it changes the checksum (duh!)
|
@@ -66,7 +97,7 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
66
97
|
## [1.0.7] - 2025-08-24
|
67
98
|
- TAG: [v1.0.7][1.0.7t]
|
68
99
|
- COVERAGE: 100.00% -- 130/130 lines in 7 files
|
69
|
-
- BRANCH COVERAGE:
|
100
|
+
- BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files
|
70
101
|
- 95.35% documented
|
71
102
|
### Fixed
|
72
103
|
- Reproducible builds, with consistent checksums, by *not* using SOURCE_DATE_EPOCH.
|
@@ -75,7 +106,7 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
75
106
|
## [1.0.6] - 2025-08-24
|
76
107
|
- TAG: [v1.0.6][1.0.6t]
|
77
108
|
- COVERAGE: 100.00% -- 130/130 lines in 7 files
|
78
|
-
- BRANCH COVERAGE:
|
109
|
+
- BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files
|
79
110
|
- 95.35% documented
|
80
111
|
### Fixed
|
81
112
|
- kettle-release: ensure SOURCE_DATE_EPOCH is applied within the same shell for both build and release by prefixing the commands with the env var (e.g., `SOURCE_DATE_EPOCH=$epoch bundle exec rake build` and `... rake release`); prevents losing the variable across shell boundaries and improves reproducible checksums.
|
@@ -83,7 +114,7 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
83
114
|
## [1.0.5] - 2025-08-24
|
84
115
|
- TAG: [v1.0.5][1.0.5t]
|
85
116
|
- COVERAGE: 100.00% -- 130/130 lines in 7 files
|
86
|
-
- BRANCH COVERAGE:
|
117
|
+
- BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files
|
87
118
|
- 95.35% documented
|
88
119
|
### Fixed
|
89
120
|
- kettle-release: will run regardless of how it is invoked (i.e. works as binstub)
|
@@ -91,7 +122,7 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
91
122
|
## [1.0.4] - 2025-08-24
|
92
123
|
- TAG: [v1.0.4][1.0.4t]
|
93
124
|
- COVERAGE: 100.00% -- 130/130 lines in 7 files
|
94
|
-
- BRANCH COVERAGE:
|
125
|
+
- BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files
|
95
126
|
- 95.35% documented
|
96
127
|
### Added
|
97
128
|
- kettle-release: checks all remotes for a GitHub remote and syncs origin/trunk with it; prompts to rebase or --no-ff merge when histories diverge; pushes to both origin and the GitHub remote on merge; uses the GitHub remote for GitHub Actions CI checks, and also checks GitLab CI when a GitLab remote and .gitlab-ci.yml are present.
|
@@ -159,26 +190,29 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
159
190
|
- Selecting will run the selected workflow via `act`
|
160
191
|
- This may move to its own gem in the future.
|
161
192
|
|
162
|
-
[Unreleased]: https://
|
163
|
-
[1.0.
|
164
|
-
[1.0.
|
165
|
-
[1.0.9]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.8...v1.0.9
|
166
|
-
[1.0.9t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.9
|
167
|
-
[1.0.8]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.7...v1.0.8
|
168
|
-
[1.0.8t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.8
|
169
|
-
[1.0.7]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.6...v1.0.7
|
170
|
-
[1.0.7t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.7
|
171
|
-
[1.0.6]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.5...v1.0.6
|
172
|
-
[1.0.6t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.6
|
173
|
-
[1.0.5]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.4...v1.0.5
|
174
|
-
[1.0.5t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.5
|
175
|
-
[1.0.4]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.3...v1.0.4
|
176
|
-
[1.0.4t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.4
|
177
|
-
[1.0.3]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.2...v1.0.3
|
178
|
-
[1.0.3t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.3
|
179
|
-
[1.0.2]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.1...v1.0.2
|
180
|
-
[1.0.2t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.2
|
193
|
+
[Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.0.11...HEAD
|
194
|
+
[1.0.0]: https://github.com/kettle-rb/kettle-dev/compare/a427c302df09cfe4253a7c8d400333f9a4c1a208...v1.0.0
|
195
|
+
[1.0.0t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.0
|
181
196
|
[1.0.1]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.0...v1.0.1
|
182
|
-
[1.0.1t]: https://
|
183
|
-
[1.0.
|
184
|
-
[1.0.
|
197
|
+
[1.0.1t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.1
|
198
|
+
[1.0.2]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.1...v1.0.2
|
199
|
+
[1.0.2t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.2
|
200
|
+
[1.0.3]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.2...v1.0.3
|
201
|
+
[1.0.3t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.3
|
202
|
+
[1.0.4]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.3...v1.0.4
|
203
|
+
[1.0.4t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.4
|
204
|
+
[1.0.5]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.4...v1.0.5
|
205
|
+
[1.0.5t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.5
|
206
|
+
[1.0.6]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.5...v1.0.6
|
207
|
+
[1.0.6t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.6
|
208
|
+
[1.0.7]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.6...v1.0.7
|
209
|
+
[1.0.7t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.7
|
210
|
+
[1.0.8]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.7...v1.0.8
|
211
|
+
[1.0.8t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.8
|
212
|
+
[1.0.9]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.8...v1.0.9
|
213
|
+
[1.0.9t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.9
|
214
|
+
[1.0.10]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.9...v1.0.10
|
215
|
+
[1.0.10t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.10
|
216
|
+
[1.0.11]: https://github.com/kettle-rb/kettle-dev/compare/v1.0.10...v1.0.11
|
217
|
+
[1.0.11t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.0.11
|
218
|
+
|
data/CHANGELOG.md.example
CHANGED
@@ -27,7 +27,7 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
27
27
|
## [1.0.1] - 2025-08-24
|
28
28
|
- TAG: [v1.0.1][1.0.1t]
|
29
29
|
- COVERAGE: 100.00% -- 130/130 lines in 7 files
|
30
|
-
- BRANCH COVERAGE:
|
30
|
+
- BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files
|
31
31
|
- 100% documented
|
32
32
|
### Fixed
|
33
33
|
- bugfix: oopsie
|
@@ -35,13 +35,13 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
35
35
|
## [1.0.0] - 2025-08-24
|
36
36
|
- TAG: [v1.0.0][1.0.0t]
|
37
37
|
- COVERAGE: 100.00% -- 130/130 lines in 7 files
|
38
|
-
- BRANCH COVERAGE:
|
38
|
+
- BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files
|
39
39
|
- 100% documented
|
40
40
|
### Added
|
41
41
|
- Initial release
|
42
42
|
|
43
43
|
[Unreleased]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.0...HEAD
|
44
|
-
[1.0.1]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.0...v1.0.1
|
45
|
-
[1.0.1t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.1
|
46
44
|
[1.0.0]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/a427c302df09cfe4253a7c8d400333f9a4c1a208...v1.0.0
|
47
45
|
[1.0.0t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.0
|
46
|
+
[1.0.1]: https://gitlab.com/kettle-rb/kettle-dev/-/compare/v1.0.0...v1.0.1
|
47
|
+
[1.0.1t]: https://gitlab.com/kettle-rb/kettle-dev/-/tags/v1.0.1
|
data/CONTRIBUTING.md
CHANGED
@@ -22,6 +22,42 @@ Follow these instructions:
|
|
22
22
|
6. Make sure to add tests for it. This is important, so it doesn't break in a future release.
|
23
23
|
7. Create new Pull Request.
|
24
24
|
|
25
|
+
## Environment Variables for Local Development
|
26
|
+
|
27
|
+
Below are the primary environment variables recognized by stone_checksums (and its integrated tools). Unless otherwise noted, set boolean values to the string "true" to enable.
|
28
|
+
|
29
|
+
General/runtime
|
30
|
+
- DEBUG: Enable extra internal logging for this library (default: false)
|
31
|
+
- REQUIRE_BENCH: Enable `require_bench` to profile requires (default: false)
|
32
|
+
- CI: When set to true, adjusts default rake tasks toward CI behavior
|
33
|
+
|
34
|
+
Coverage (kettle-soup-cover / SimpleCov)
|
35
|
+
- K_SOUP_COV_DO: Enable coverage collection (default: true in .envrc)
|
36
|
+
- K_SOUP_COV_FORMATTERS: Comma-separated list of formatters (html, xml, rcov, lcov, json, tty)
|
37
|
+
- K_SOUP_COV_MIN_LINE: Minimum line coverage threshold (integer, e.g., 100)
|
38
|
+
- K_SOUP_COV_MIN_BRANCH: Minimum branch coverage threshold (integer, e.g., 100)
|
39
|
+
- K_SOUP_COV_MIN_HARD: Fail the run if thresholds are not met (true/false)
|
40
|
+
- K_SOUP_COV_MULTI_FORMATTERS: Enable multiple formatters at once (true/false)
|
41
|
+
- K_SOUP_COV_OPEN_BIN: Path to browser opener for HTML (empty disables auto-open)
|
42
|
+
- MAX_ROWS: Limit console output rows for simplecov-console (e.g., 1)
|
43
|
+
Tip: When running a single spec file locally, you may want `K_SOUP_COV_MIN_HARD=false` to avoid failing thresholds for a partial run.
|
44
|
+
|
45
|
+
GitHub API and CI helpers
|
46
|
+
- GITHUB_TOKEN or GH_TOKEN: Token used by `ci:act` and release workflow checks to query GitHub Actions status at higher rate limits
|
47
|
+
|
48
|
+
Releasing and signing
|
49
|
+
- SKIP_GEM_SIGNING: If set, skip gem signing during build/release
|
50
|
+
- GEM_CERT_USER: Username for selecting your public cert in `certs/<USER>.pem` (defaults to $USER)
|
51
|
+
- SOURCE_DATE_EPOCH: Reproducible build timestamp. `kettle-release` will set this automatically for the session.
|
52
|
+
|
53
|
+
Git hooks and commit message helpers (exe/kettle-commit-msg)
|
54
|
+
- GIT_HOOK_BRANCH_VALIDATE: Branch name validation mode (e.g., `jira`) or `false` to disable
|
55
|
+
- GIT_HOOK_FOOTER_APPEND: Append a footer to commit messages when goalie allows (true/false)
|
56
|
+
- GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates
|
57
|
+
- GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false)
|
58
|
+
|
59
|
+
For a quick starting point, this repository’s `.envrc` shows sane defaults, and `.env.local` can override them locally.
|
60
|
+
|
25
61
|
## Appraisals
|
26
62
|
|
27
63
|
From time to time the Appraisal2 gemfiles in `gemfiles/` will need to be updated.
|
@@ -110,7 +146,7 @@ NOTE: To build without signing the gem you must set `SKIP_GEM_SIGNING` to some v
|
|
110
146
|
|
111
147
|
#### Automated process
|
112
148
|
|
113
|
-
Run `kettle-release`.
|
149
|
+
Run `bundle exec kettle-release`.
|
114
150
|
|
115
151
|
#### Manual process
|
116
152
|
|