kettle-changelog 1.0.6 → 1.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91116b5db1a2ec7a70b8bb798aae0e19222ee9eded29fc26b8bdf80e0efd0d0d
4
- data.tar.gz: f1dd9b8ff5dc27c2393a87f4fa74c2323910248fe8765755a2a47ca74aabe105
3
+ metadata.gz: 2ecd249c6b061cc317b81a854a766b92f0f8563ec986d46ba301c91aa0e03be9
4
+ data.tar.gz: 5aa44defac27dbce2d14a0b52f24647a700f9910980ab5dea0ed194586c2bb26
5
5
  SHA512:
6
- metadata.gz: 383cbcaed4483a26f407bb7f9b433cddb77799f8f6c91b7f241e07c893f8ef41c2982ba071694d5197017bac689eb7c2b7afd82d6feb0d0384cdc565be37c9bf
7
- data.tar.gz: 2b3233ceb38ae67fd12e82d03fa56590f028b5738aa5ebaaf731e6e6a071f5cc849c3ad1843535305184122cfa3478a7ca5d398312e02d726a890b78a740d9a1
6
+ metadata.gz: 4f2695df4b42baf349133ce330e7e35ea80ec0060a7d50e6373249717cd171fdbbc50898f89dfdbfc2e5fab4d698bcc60b30512f170d0bccbd9bf33a5cd3c7d9
7
+ data.tar.gz: 85cc9764d62f271e046efec6730b491c0a124d78a52dea7732f4fd31f94ebb4bd2e2b8d994147d51b1fe92ccfdd20d3289cad70681ca1883a65d2a11ba3154c5
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,19 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.0.7] - 2026-08-30
34
+
35
+ - TAG: [v1.0.7][1.0.7t]
36
+ - COVERAGE: 94.35% -- 1136/1204 lines in 6 files
37
+ - BRANCH COVERAGE: 77.73% -- 398/512 branches in 6 files
38
+ - 38.89% documented
39
+
40
+ ### Fixed
41
+
42
+ - Honor the release-provided disposable lockfile when generating strict changelog coverage.
43
+
44
+ - Use generated coverage bundles for changelog coverage when available, with explicit bundle selection overrides.
45
+
33
46
  ## [1.0.6] - 2026-08-29
34
47
 
35
48
  - TAG: [v1.0.6][1.0.6t]
@@ -192,7 +205,9 @@ Please file a bug if you notice a violation of semantic versioning.
192
205
 
193
206
  - Initial release
194
207
 
195
- [Unreleased]: https://github.com/kettle-dev/kettle-changelog/compare/v1.0.6...HEAD
208
+ [Unreleased]: https://github.com/kettle-dev/kettle-changelog/compare/v1.0.7...HEAD
209
+ [1.0.7]: https://github.com/kettle-dev/kettle-changelog/compare/v1.0.6...v1.0.7
210
+ [1.0.7t]: https://github.com/kettle-dev/kettle-changelog/releases/tag/v1.0.7
196
211
  [1.0.6]: https://github.com/kettle-dev/kettle-changelog/compare/v1.0.5...v1.0.6
197
212
  [1.0.6t]: https://github.com/kettle-dev/kettle-changelog/releases/tag/v1.0.6
198
213
  [1.0.5]: https://github.com/kettle-dev/kettle-changelog/compare/v1.0.4...v1.0.5
data/README.md CHANGED
@@ -123,6 +123,7 @@ gem install kettle-changelog
123
123
 
124
124
  - `K_CHANGELOG_PATH` selects a changelog outside the current project root.
125
125
  - `K_CHANGELOG_COVERAGE_ROOT` selects the project root used for coverage generation.
126
+ - `K_CHANGELOG_COVERAGE_GEMFILE` selects the target-project Gemfile used for coverage generation. It is resolved relative to the coverage root; absent an explicit setting, `gemfiles/coverage.gemfile` is preferred when generated by Appraisal, then the root `Gemfile` is used.
126
127
  - `K_CHANGELOG_VERSION_FILE` selects the version file when the project has more than one version tree.
127
128
  - `K_CHANGELOG_GEM_NAME` overrides the gem name used for release lookups.
128
129
  - `K_CHANGELOG_STRICT=false` allows missing coverage or YARD data.
@@ -137,6 +138,10 @@ Run the release preparation command from the gem root:
137
138
  bundle exec kettle-changelog
138
139
  ```
139
140
 
141
+ Use `--coverage-gemfile PATH` to select a different target-project coverage
142
+ bundle for one invocation. This is intentionally separate from `BUNDLE_GEMFILE`,
143
+ which may be required to run `kettle-changelog` itself from a release bundle.
144
+
140
145
  Use `--yes` for non-interactive release automation. Add a note without preparing a release with:
141
146
 
142
147
  ```console
@@ -397,7 +402,7 @@ Thanks for RTFM. ☺️
397
402
  [📌gitmoji]: https://gitmoji.dev
398
403
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
399
404
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
400
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-1.187-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
405
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-1.204-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
401
406
  [🔐security]: https://github.com/kettle-dev/kettle-changelog/blob/main/SECURITY.md
402
407
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
403
408
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
data/exe/kettle-changelog CHANGED
@@ -63,7 +63,7 @@ end
63
63
 
64
64
  if ARGV.include?("-h") || ARGV.include?("--help")
65
65
  puts <<~USAGE
66
- Usage: kettle-changelog [--version VERSION] [--yes] [--update-prep|--reformat|--backfill-released-version VERSION] [--pending-release] [--release-state] [--refresh-cache] [--add-unreleased-entry --section SECTION --entry TEXT] [--upsert-unreleased-entry --section SECTION --key KEY --entry TEXT] [--json|--events[=TYPES]] [--no-strict] [--no-coverage-threshold]
66
+ Usage: kettle-changelog [--version VERSION] [--yes] [--coverage-gemfile PATH] [--update-prep|--reformat|--backfill-released-version VERSION] [--pending-release] [--release-state] [--refresh-cache] [--add-unreleased-entry --section SECTION --entry TEXT] [--upsert-unreleased-entry --section SECTION --key KEY --entry TEXT] [--json|--events[=TYPES]] [--no-strict] [--no-coverage-threshold]
67
67
 
68
68
  Detects the current version from lib/**/version.rb, the latest live release, and
69
69
  the most recent CHANGELOG.md release section, then prompts to confirm the selected plan:
@@ -93,12 +93,14 @@ if ARGV.include?("-h") || ARGV.include?("--help")
93
93
  --events[=TYPES] Print newline-delimited JSON changelog events
94
94
  --no-strict Allow missing coverage and yard data (warnings only, no errors)
95
95
  --no-coverage-threshold Generate coverage without hard-failing below configured thresholds
96
+ --coverage-gemfile PATH Run coverage through this target-project Gemfile
96
97
 
97
98
  Environment:
98
99
  K_CHANGELOG_STRICT=false Disable strict mode (equivalent to --no-strict flag)
99
100
  K_CHANGELOG_COVERAGE_HARD=false Disable coverage threshold hard-failure
100
101
  K_CHANGELOG_PATH=path Read and write this changelog instead of ./CHANGELOG.md
101
102
  K_CHANGELOG_COVERAGE_ROOT=path Run/read coverage from this root instead of the gem root
103
+ K_CHANGELOG_COVERAGE_GEMFILE=path Target-project Gemfile for coverage; defaults to gemfiles/coverage.gemfile, then Gemfile
102
104
  K_CHANGELOG_VERSION_FILE=path Read VERSION from this file instead of lib/**/version.rb
103
105
  K_CHANGELOG_GEM_NAME=name Read live release data as this gem instead of root .gemspec
104
106
  KETTLE_GEM_COOP_REFRESH=true Bypass cached gem.coop version data
@@ -206,6 +208,7 @@ begin
206
208
  end
207
209
 
208
210
  historical_backfill_version = extract_option_arg!(ARGV, "--backfill-released-version")
211
+ coverage_gemfile = extract_option_arg!(ARGV, "--coverage-gemfile")
209
212
 
210
213
  if upsert_unreleased_entry
211
214
  section = extract_option_arg!(ARGV, "--section")
@@ -240,7 +243,7 @@ begin
240
243
  end
241
244
 
242
245
  event_stream = events_output ? Kettle::Ndjson.event_stream($stdout, types: event_types) : nil
243
- cli = Kettle::Changelog::CLI.new(strict: strict_mode, enforce_coverage_thresholds: coverage_hard, update_prep: update_prep, reformat_only: reformat_only, historical_backfill_version: historical_backfill_version, version: version_override, refresh_cache: refresh_cache, yes: yes, event_stream: event_stream)
246
+ cli = Kettle::Changelog::CLI.new(strict: strict_mode, enforce_coverage_thresholds: coverage_hard, update_prep: update_prep, reformat_only: reformat_only, historical_backfill_version: historical_backfill_version, version: version_override, refresh_cache: refresh_cache, yes: yes, event_stream: event_stream, coverage_gemfile: coverage_gemfile)
244
247
  if release_state_query
245
248
  state = cli.release_state
246
249
  puts(json_output ? JSON.pretty_generate(state) : cli.release_state_table(state))
@@ -35,10 +35,11 @@ module Kettle
35
35
  # @param historical_backfill_version [String, nil] tagged release to document without moving Unreleased entries
36
36
  # @param version [String, nil] explicit version override for gems without a literal VERSION constant
37
37
  # @param yes [Boolean] when true, approve the selected release plan without prompting
38
- def initialize(strict: true, enforce_coverage_thresholds: true, update_prep: false, reformat_only: false, historical_backfill_version: nil, version: nil, root: Kettle::Dev::CIHelpers.project_root, refresh_cache: false, yes: false, event_stream: nil)
38
+ def initialize(strict: true, enforce_coverage_thresholds: true, update_prep: false, reformat_only: false, historical_backfill_version: nil, version: nil, root: Kettle::Dev::CIHelpers.project_root, refresh_cache: false, yes: false, event_stream: nil, coverage_gemfile: nil)
39
39
  @root = root
40
40
  @changelog_path = resolved_changelog_path
41
41
  @coverage_root = resolved_coverage_root
42
+ @coverage_gemfile = resolved_coverage_gemfile(coverage_gemfile)
42
43
  @coverage_path = File.join(@coverage_root, "coverage", "coverage.json")
43
44
  @strict = strict
44
45
  @enforce_coverage_thresholds = enforce_coverage_thresholds
@@ -939,11 +940,42 @@ module Kettle
939
940
  env[key] = nil
940
941
  end
941
942
  env.merge!(changelog_coverage_workflow_thresholds)
942
- gemfile = File.join(@coverage_root, "Gemfile")
943
- env["BUNDLE_GEMFILE"] = gemfile if File.file?(gemfile)
943
+ env["BUNDLE_GEMFILE"] = @coverage_gemfile if @coverage_gemfile
944
+ coverage_lockfile = ENV.fetch("KETTLE_CHANGELOG_COVERAGE_LOCKFILE", "").to_s.strip
945
+ unless coverage_lockfile.empty?
946
+ raise "Configured changelog coverage lockfile does not exist: #{coverage_lockfile}" unless File.file?(coverage_lockfile)
947
+
948
+ env["BUNDLE_LOCKFILE"] = coverage_lockfile
949
+ end
950
+ # This is a release-tool handoff, not target-project configuration.
951
+ env["KETTLE_CHANGELOG_COVERAGE_LOCKFILE"] = nil
944
952
  env
945
953
  end
946
954
 
955
+ # Coverage has a deliberately smaller bundle than the project's normal
956
+ # development bundle when Appraisal generated gemfiles/coverage.gemfile.
957
+ # Keep the explicit setting separate from BUNDLE_GEMFILE: that variable
958
+ # commonly belongs to the outer kettle-changelog release bundle.
959
+ def resolved_coverage_gemfile(explicit_gemfile)
960
+ requested = explicit_gemfile.to_s.strip
961
+ requested = ENV.fetch("K_CHANGELOG_COVERAGE_GEMFILE", "").to_s.strip if requested.empty?
962
+
963
+ unless requested.empty?
964
+ path = File.expand_path(requested, @coverage_root)
965
+ raise "Configured changelog coverage Gemfile does not exist: #{path}" unless File.file?(path)
966
+
967
+ return path
968
+ end
969
+
970
+ generated = File.join(@coverage_root, "gemfiles", "coverage.gemfile")
971
+ return generated if File.file?(generated)
972
+
973
+ root_gemfile = File.join(@coverage_root, "Gemfile")
974
+ return root_gemfile if File.file?(root_gemfile)
975
+
976
+ nil
977
+ end
978
+
947
979
  # The changelog coverage run is the final local test gate before a
948
980
  # release commit is pushed. Reuse the checked-in CI workflow thresholds
949
981
  # rather than silently falling back to kettle-soup-cover defaults.
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "1.0.6"
8
+ VERSION = "1.0.7"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-changelog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -63,7 +63,7 @@ dependencies:
63
63
  requirements:
64
64
  - - ">="
65
65
  - !ruby/object:Gem::Version
66
- version: 3.0.17
66
+ version: 3.0.19
67
67
  - - "<"
68
68
  - !ruby/object:Gem::Version
69
69
  version: 4.0.0
@@ -73,7 +73,7 @@ dependencies:
73
73
  requirements:
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 3.0.17
76
+ version: 3.0.19
77
77
  - - "<"
78
78
  - !ruby/object:Gem::Version
79
79
  version: 4.0.0
@@ -304,10 +304,10 @@ licenses:
304
304
  - AGPL-3.0-only
305
305
  metadata:
306
306
  homepage_uri: https://kettle-changelog.galtzo.com
307
- source_code_uri: https://github.com/kettle-dev/kettle-changelog/tree/v1.0.6
308
- changelog_uri: https://github.com/kettle-dev/kettle-changelog/blob/v1.0.6/CHANGELOG.md
307
+ source_code_uri: https://github.com/kettle-dev/kettle-changelog/tree/v1.0.7
308
+ changelog_uri: https://github.com/kettle-dev/kettle-changelog/blob/v1.0.7/CHANGELOG.md
309
309
  bug_tracker_uri: https://github.com/kettle-dev/kettle-changelog/issues
310
- documentation_uri: https://www.rubydoc.info/gems/kettle-changelog/1.0.6
310
+ documentation_uri: https://www.rubydoc.info/gems/kettle-changelog/1.0.7
311
311
  funding_uri: https://github.com/sponsors/pboling
312
312
  wiki_uri: https://github.com/kettle-dev/kettle-changelog/wiki
313
313
  news_uri: https://www.railsbling.com/tags/kettle-changelog
metadata.gz.sig CHANGED
Binary file