kettle-dev 3.0.18 → 3.0.19
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/CHANGELOG.md +18 -1
- data/README.md +1 -1
- data/lib/kettle/dev/release_cli.rb +39 -12
- 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: d876b80536e92761ec39671fee1b416885fceba475be7ade298e9dd8985df29e
|
|
4
|
+
data.tar.gz: d9075edc61ba1b98e98b7a4024d53d8c57e4beb0a0239059eeb0ddc6ec597c35
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aa04b5dc3afa36b4dfdb5c7671ec2fba75fbb0bf73a1d88ee00c0e66d0c81bea453e57670f659a830a4042c98199d9f0fb280602bca5e0840395a998761e3fcd
|
|
7
|
+
data.tar.gz: 57ba7e91a1130bcb673b40b1c278b9206157163121a7bac829cf784641d2095153577bae43595d0fcba02f2f7ddb4b008c741f7599819f98e7678ebf36e45ce5
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,21 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.0.19] - 2026-08-30
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.0.19][3.0.19t]
|
|
36
|
+
- COVERAGE: 91.50% -- 5855/6399 lines in 47 files
|
|
37
|
+
- BRANCH COVERAGE: 76.21% -- 2249/2951 branches in 47 files
|
|
38
|
+
- 50.97% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Run changelog coverage with the disposable release lockfile so host platform reconciliation cannot dirty a release.
|
|
43
|
+
|
|
44
|
+
- Normalize release lockfiles before changelog coverage runs.
|
|
45
|
+
|
|
46
|
+
- Isolate changelog coverage with the selected coverage Gemfile lockfile during release.
|
|
47
|
+
|
|
33
48
|
## [3.0.18] - 2026-08-30
|
|
34
49
|
|
|
35
50
|
- TAG: [v3.0.18][3.0.18t]
|
|
@@ -3651,7 +3666,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
3651
3666
|
- Selecting will run the selected workflow via `act`
|
|
3652
3667
|
- This may move to its own gem in the future.
|
|
3653
3668
|
|
|
3654
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.
|
|
3669
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.19...HEAD
|
|
3670
|
+
[3.0.19]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.18...v3.0.19
|
|
3671
|
+
[3.0.19t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.19
|
|
3655
3672
|
[3.0.18]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.17...v3.0.18
|
|
3656
3673
|
[3.0.18t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.18
|
|
3657
3674
|
[3.0.17]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.16...v3.0.17
|
data/README.md
CHANGED
|
@@ -1048,7 +1048,7 @@ Thanks for RTFM. ☺️
|
|
|
1048
1048
|
[📌gitmoji]: https://gitmoji.dev
|
|
1049
1049
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1050
1050
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1051
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.
|
|
1051
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.399-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1052
1052
|
[🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
|
|
1053
1053
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1054
1054
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -218,7 +218,7 @@ module Kettle
|
|
|
218
218
|
@started_at = nil
|
|
219
219
|
@finished_report = nil
|
|
220
220
|
@changelog_generated_coverage = false
|
|
221
|
-
@
|
|
221
|
+
@release_task_lockfile_paths = {}
|
|
222
222
|
end
|
|
223
223
|
|
|
224
224
|
def run
|
|
@@ -251,6 +251,11 @@ module Kettle
|
|
|
251
251
|
attr_reader :finished_report
|
|
252
252
|
|
|
253
253
|
def run_with_release_environment
|
|
254
|
+
# Changelog generation at step 0 runs the target project's test bundle
|
|
255
|
+
# to collect coverage. Normalize its canonical release lockfile before
|
|
256
|
+
# that subprocess starts; otherwise a local development PATH lock can
|
|
257
|
+
# force Bundler to resolve an invalid mixed local/released graph.
|
|
258
|
+
prepare_release_lockfiles_for_release_tasks! if release_lockfile_preflight_needed?
|
|
254
259
|
run_pre_release_checks! if run_step?(0)
|
|
255
260
|
|
|
256
261
|
# 1. Ensure Bundler version and record its current release in the
|
|
@@ -357,7 +362,6 @@ module Kettle
|
|
|
357
362
|
end
|
|
358
363
|
|
|
359
364
|
prepare_rubocop_lts_local_branch! if rubocop_lts_release_preflight_needed?
|
|
360
|
-
prepare_release_lockfiles_for_release_tasks! if release_lockfile_preflight_needed?
|
|
361
365
|
|
|
362
366
|
# 3. bin/setup
|
|
363
367
|
run_cmd!(release_setup_command) if run_step?(3)
|
|
@@ -602,7 +606,10 @@ module Kettle
|
|
|
602
606
|
end
|
|
603
607
|
|
|
604
608
|
def release_lockfile_preflight_needed?
|
|
605
|
-
|
|
609
|
+
# Step 0 invokes kettle-changelog, which runs `bundle exec kettle-test`
|
|
610
|
+
# for fresh coverage. It therefore needs the same registry-backed
|
|
611
|
+
# release lockfile as later setup, task, and documentation steps.
|
|
612
|
+
run_step?(0) || (3..5).any? { |step| run_step?(step) }
|
|
606
613
|
end
|
|
607
614
|
|
|
608
615
|
def prepare_rubocop_lts_local_branch!
|
|
@@ -927,6 +934,14 @@ module Kettle
|
|
|
927
934
|
return release_child_command("bundle exec kettle-changelog") unless gemfile
|
|
928
935
|
|
|
929
936
|
environment = {"BUNDLE_GEMFILE" => gemfile}
|
|
937
|
+
coverage_gemfile = changelog_coverage_gemfile
|
|
938
|
+
environment["K_CHANGELOG_COVERAGE_GEMFILE"] = coverage_gemfile if coverage_gemfile
|
|
939
|
+
# Changelog coverage runs the target project's bundle. Give that nested
|
|
940
|
+
# invocation a disposable lockfile for its selected coverage Gemfile so
|
|
941
|
+
# Bundler's host-platform reconciliation cannot dirty the prep commit.
|
|
942
|
+
if (lockfile = release_task_lockfile_path(gemfile: coverage_gemfile || File.join(@root, "Gemfile")))
|
|
943
|
+
environment["KETTLE_CHANGELOG_COVERAGE_LOCKFILE"] = lockfile
|
|
944
|
+
end
|
|
930
945
|
if (local_root = release_changelog_local_root)
|
|
931
946
|
environment["KETTLE_CHANGELOG_DEV_ROOT"] = local_root
|
|
932
947
|
end
|
|
@@ -960,6 +975,18 @@ module Kettle
|
|
|
960
975
|
File.expand_path(local_root)
|
|
961
976
|
end
|
|
962
977
|
|
|
978
|
+
# A generated coverage appraisal is intentionally smaller than the root
|
|
979
|
+
# development bundle and therefore avoids release-only tool dependency
|
|
980
|
+
# conflicts. Let kettle-changelog retain the root-Gemfile fallback when
|
|
981
|
+
# a project has not generated this optional bundle.
|
|
982
|
+
def changelog_coverage_gemfile
|
|
983
|
+
configured = ENV["K_CHANGELOG_COVERAGE_GEMFILE"].to_s.strip
|
|
984
|
+
return File.expand_path(configured, @root) unless configured.empty?
|
|
985
|
+
|
|
986
|
+
generated = File.join(@root, "gemfiles", "coverage.gemfile")
|
|
987
|
+
generated if File.file?(generated)
|
|
988
|
+
end
|
|
989
|
+
|
|
963
990
|
# Monorepo subprojects commonly disable their local hard coverage gate
|
|
964
991
|
# because their narrow test suite cannot satisfy the aggregate root
|
|
965
992
|
# thresholds. Preserve an explicit changelog policy, otherwise derive
|
|
@@ -1036,26 +1063,26 @@ module Kettle
|
|
|
1036
1063
|
# bundler/gem_tasks' release:guard_clean check. Keep that reconciliation
|
|
1037
1064
|
# in a disposable lockfile so the committed, normalized lockfile remains
|
|
1038
1065
|
# unchanged throughout build and publication.
|
|
1039
|
-
def release_task_lockfile_path
|
|
1040
|
-
return @
|
|
1066
|
+
def release_task_lockfile_path(gemfile: File.join(@root, "Gemfile"))
|
|
1067
|
+
return @release_task_lockfile_paths[gemfile] if @release_task_lockfile_paths.key?(gemfile)
|
|
1041
1068
|
|
|
1042
|
-
source =
|
|
1069
|
+
source = "#{gemfile}.lock"
|
|
1043
1070
|
return unless File.file?(source)
|
|
1044
1071
|
|
|
1045
1072
|
directory = File.join(@root, "tmp", "kettle-release", "lockfiles")
|
|
1046
1073
|
FileUtils.mkdir_p(directory)
|
|
1047
|
-
|
|
1048
|
-
FileUtils.cp(source,
|
|
1049
|
-
@
|
|
1074
|
+
path = File.join(directory, "#{File.basename(gemfile)}-#{$$}.lock")
|
|
1075
|
+
FileUtils.cp(source, path)
|
|
1076
|
+
@release_task_lockfile_paths[gemfile] = path
|
|
1050
1077
|
rescue SystemCallError => error
|
|
1051
1078
|
abort("Unable to isolate the release task lockfile: #{error.message}")
|
|
1052
1079
|
end
|
|
1053
1080
|
|
|
1054
1081
|
def cleanup_release_task_lockfile!
|
|
1055
|
-
return
|
|
1082
|
+
return if @release_task_lockfile_paths.empty?
|
|
1056
1083
|
|
|
1057
|
-
FileUtils.rm_f(
|
|
1058
|
-
@
|
|
1084
|
+
@release_task_lockfile_paths.each_value { |path| FileUtils.rm_f(path) }
|
|
1085
|
+
@release_task_lockfile_paths.clear
|
|
1059
1086
|
end
|
|
1060
1087
|
|
|
1061
1088
|
def confirm_yes!(message, prompt, abort_message)
|
data/lib/kettle/dev/version.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Kettle
|
|
|
5
5
|
# Version namespace for this gem.
|
|
6
6
|
module Version
|
|
7
7
|
# Current gem version.
|
|
8
|
-
VERSION = "3.0.
|
|
8
|
+
VERSION = "3.0.19"
|
|
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-dev
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.
|
|
4
|
+
version: 3.0.19
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -400,10 +400,10 @@ licenses:
|
|
|
400
400
|
- AGPL-3.0-only
|
|
401
401
|
metadata:
|
|
402
402
|
homepage_uri: https://kettle-dev.galtzo.com
|
|
403
|
-
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.
|
|
404
|
-
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.
|
|
403
|
+
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v3.0.19
|
|
404
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.19/CHANGELOG.md
|
|
405
405
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
|
|
406
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.
|
|
406
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/3.0.19
|
|
407
407
|
funding_uri: https://github.com/sponsors/pboling
|
|
408
408
|
wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
|
|
409
409
|
news_uri: https://www.railsbling.com/tags/kettle-dev
|
metadata.gz.sig
CHANGED
|
Binary file
|