kettle-jem 7.1.3 → 7.1.4
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 +33 -1
- data/README.md +1 -1
- data/lib/kettle/jem/cli.rb +18 -7
- data/lib/kettle/jem/maintenance_changelog.rb +136 -0
- data/lib/kettle/jem/tasks/template_task.rb +1 -0
- data/lib/kettle/jem/templates/.gitignore.example +1 -1
- data/lib/kettle/jem/templates/gem.gemspec.example +1 -1
- data/lib/kettle/jem/templates/gemfiles/modular/documentation.gemfile.example +1 -1
- data/lib/kettle/jem/templates/shim/gem.gemspec.example +1 -1
- data/lib/kettle/jem/version.rb +1 -1
- data/lib/kettle/jem.rb +28 -50
- data.tar.gz.sig +0 -0
- metadata +25 -4
- metadata.gz.sig +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3900eae88b47a873cae6083d0465467ebd57842a12ed7e4b8cab28d37092fef7
|
|
4
|
+
data.tar.gz: a0df0ddab136eb1079901cda7ee1715ddb574b5392d2ee314196fd54b2042d7c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 47a922c1ad1fdd9f57838b74de337777129ed2127752c5d579f0070b084fd7973c50ea68f7dd7258cad159229958d611185e4ef3470557f86412a9b53af77211
|
|
7
|
+
data.tar.gz: e05ba9400554b325770fcad5bc79c94180c626188c41d003fc1dbd368c322e474fb4ea9484b97fc717e6d8e4b4f6c4b94cda5d29543d5f9418bcd544d7abbb6b
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,36 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [7.1.4] - 2026-08-12
|
|
34
|
+
|
|
35
|
+
- TAG: [v7.1.4][7.1.4t]
|
|
36
|
+
- COVERAGE: 93.57% -- 10753/11492 lines in 16 files
|
|
37
|
+
- BRANCH COVERAGE: 77.10% -- 4599/5965 branches in 16 files
|
|
38
|
+
- 18.00% documented
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- Write-mode dependency-floor and workflow-pin maintenance tools now document their updates in CHANGELOG.md by default.
|
|
43
|
+
|
|
44
|
+
- [kc] kettle-jem-deps-floor: Update kettle-jem template dependency floors:
|
|
45
|
+
- kettle-dev (~> 3.0, >= 3.0.0 -> ~> 3.0, >= 3.0.6)
|
|
46
|
+
- kettle-family (~> 1.2, >= 1.2.44 -> ~> 1.2, >= 1.2.51)
|
|
47
|
+
- kettle-jem (~> 7.1, >= 7.1.1 -> ~> 7.1, >= 7.1.3)
|
|
48
|
+
- yard-lint (~> 1.10, >= 1.10.3 -> ~> 1.11, >= 1.11.0)
|
|
49
|
+
|
|
50
|
+
- [kc] kettle-jem-workflow-pins: Update pinned GitHub Actions in kettle-jem templates:
|
|
51
|
+
- github/codeql-action/analyze v4.37.4 (f205ea1c3313d32999d8d6a48b4f6530d4437b38) -> v4.37.6 (5595ccaf912efad79be6eef63a5619ff05969be3)
|
|
52
|
+
- github/codeql-action/autobuild v4.37.4 (f205ea1c3313d32999d8d6a48b4f6530d4437b38) -> v4.37.6 (5595ccaf912efad79be6eef63a5619ff05969be3)
|
|
53
|
+
- github/codeql-action/init v4.37.4 (f205ea1c3313d32999d8d6a48b4f6530d4437b38) -> v4.37.6 (5595ccaf912efad79be6eef63a5619ff05969be3)
|
|
54
|
+
|
|
55
|
+
- Declare kettle-changelog as a runtime dependency for packaged maintenance commands.
|
|
56
|
+
|
|
57
|
+
- Main templating commands now record an aggregate Changed entry through kettle-changelog only when template files change, while transfer replay uses kettle-changelog's structural merger.
|
|
58
|
+
|
|
59
|
+
### Fixed
|
|
60
|
+
|
|
61
|
+
- Restore source-checkout loading for the repository-local dependency-floor and workflow-pin maintenance tools.
|
|
62
|
+
|
|
33
63
|
## [7.1.3] - 2026-08-11
|
|
34
64
|
|
|
35
65
|
- TAG: [v7.1.3][7.1.3t]
|
|
@@ -1494,7 +1524,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
1494
1524
|
- Released kettle-jem as part of the initial StructuredMerge Ruby 7.0.0 gem set.
|
|
1495
1525
|
- Included packaged templates and parser-backed merge support for Ruby gem templating.
|
|
1496
1526
|
|
|
1497
|
-
[Unreleased]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.
|
|
1527
|
+
[Unreleased]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.4...HEAD
|
|
1528
|
+
[7.1.4]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.3...v7.1.4
|
|
1529
|
+
[7.1.4t]: https://github.com/structuredmerge/structuredmerge-ruby/releases/tag/v7.1.4
|
|
1498
1530
|
[7.1.3]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.2...v7.1.3
|
|
1499
1531
|
[7.1.3t]: https://github.com/structuredmerge/structuredmerge-ruby/releases/tag/v7.1.3
|
|
1500
1532
|
[7.1.2]: https://github.com/structuredmerge/structuredmerge-ruby/compare/v7.1.1...v7.1.2
|
data/README.md
CHANGED
|
@@ -760,7 +760,7 @@ Thanks for RTFM. ☺️
|
|
|
760
760
|
[📌gitmoji]: https://gitmoji.dev
|
|
761
761
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
762
762
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
763
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-11.
|
|
763
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-11.492-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
764
764
|
[🔐security]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/SECURITY.md
|
|
765
765
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
766
766
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
data/lib/kettle/jem/cli.rb
CHANGED
|
@@ -9,13 +9,13 @@ module Kettle
|
|
|
9
9
|
module CLI
|
|
10
10
|
USAGE = <<~USAGE
|
|
11
11
|
Usage:
|
|
12
|
-
kettle-jem [PROJECT_ROOT] [--accept-config] [--bootstrap-mode] [--quiet|--verbose]
|
|
13
|
-
kettle-jem setup [PROJECT_ROOT] [--accept-config] [--bootstrap-mode] [--quiet|--verbose]
|
|
14
|
-
kettle-jem prepare [PROJECT_ROOT] [--json|--events[=TYPE,...]] [--report PATH] [--accept|--force] [--quiet|--verbose]
|
|
12
|
+
kettle-jem [PROJECT_ROOT] [--accept-config] [--bootstrap-mode] [--changelog|--no-changelog] [--quiet|--verbose]
|
|
13
|
+
kettle-jem setup [PROJECT_ROOT] [--accept-config] [--bootstrap-mode] [--changelog|--no-changelog] [--quiet|--verbose]
|
|
14
|
+
kettle-jem prepare [PROJECT_ROOT] [--json|--events[=TYPE,...]] [--report PATH] [--accept|--force] [--changelog|--no-changelog] [--quiet|--verbose]
|
|
15
15
|
kettle-jem plan [PROJECT_ROOT] [--json|--events[=TYPE,...]] [--report PATH] [--accept|--force|--interactive] [--failure-mode MODE] [--prompt-answer ID=ACTION]
|
|
16
|
-
kettle-jem apply [PROJECT_ROOT] [--json|--events[=TYPE,...]] [--report PATH] [--accept|--force|--interactive] [--failure-mode MODE] [--prompt-answer ID=ACTION]
|
|
17
|
-
kettle-jem template [PROJECT_ROOT] [--json|--events[=TYPE,...]] [--report PATH] [--accept|--force|--interactive] [--failure-mode MODE] [--prompt-answer ID=ACTION]
|
|
18
|
-
kettle-jem install [PROJECT_ROOT] [--json|--events[=TYPE,...]] [--report PATH] [--accept|--force|--interactive] [--failure-mode MODE] [--prompt-answer ID=ACTION]
|
|
16
|
+
kettle-jem apply [PROJECT_ROOT] [--json|--events[=TYPE,...]] [--report PATH] [--accept|--force|--interactive] [--failure-mode MODE] [--prompt-answer ID=ACTION] [--changelog|--no-changelog]
|
|
17
|
+
kettle-jem template [PROJECT_ROOT] [--json|--events[=TYPE,...]] [--report PATH] [--accept|--force|--interactive] [--failure-mode MODE] [--prompt-answer ID=ACTION] [--changelog|--no-changelog]
|
|
18
|
+
kettle-jem install [PROJECT_ROOT] [--json|--events[=TYPE,...]] [--report PATH] [--accept|--force|--interactive] [--failure-mode MODE] [--prompt-answer ID=ACTION] [--changelog|--no-changelog]
|
|
19
19
|
kettle-jem manifest [PROJECT_ROOT] [--json]
|
|
20
20
|
kettle-jem selftest [PROJECT_ROOT] [--json] [--report PATH] [--destination PATH] [--template-root PATH] [--selftest-output PATH]
|
|
21
21
|
kettle-jem version
|
|
@@ -146,6 +146,9 @@ module Kettle
|
|
|
146
146
|
opts.on("--skip-rubocop-gradual", "Skip post-template RuboCop Gradual autocorrect.") do
|
|
147
147
|
options[:run_options][:skip_rubocop_gradual] = true
|
|
148
148
|
end
|
|
149
|
+
opts.on("--[no-]changelog", "Add a Changed entry summarizing actual template changes (default).") do |value|
|
|
150
|
+
options[:run_options][:skip_changelog] = !value
|
|
151
|
+
end
|
|
149
152
|
opts.on("--skip-binstubs", "Skip post-template curated Bundler binstub generation.") do
|
|
150
153
|
options[:run_options][:skip_binstubs] = true
|
|
151
154
|
end
|
|
@@ -199,7 +202,7 @@ module Kettle
|
|
|
199
202
|
types: options[:event_types]
|
|
200
203
|
)
|
|
201
204
|
end
|
|
202
|
-
case command
|
|
205
|
+
result = case command
|
|
203
206
|
when "setup"
|
|
204
207
|
Kettle::Jem.setup_project(project_root, env: env, run_options: run_options)
|
|
205
208
|
when "prepare"
|
|
@@ -229,6 +232,14 @@ module Kettle
|
|
|
229
232
|
else
|
|
230
233
|
raise ArgumentError, "Unsupported kettle-jem command #{command.inspect}"
|
|
231
234
|
end
|
|
235
|
+
return result unless %w[setup prepare apply template install].include?(command)
|
|
236
|
+
|
|
237
|
+
Kettle::Jem::MaintenanceChangelog.record_template_run(
|
|
238
|
+
project_root: project_root,
|
|
239
|
+
report: result,
|
|
240
|
+
run_options: run_options,
|
|
241
|
+
label: (command == "prepare") ? "Prepare project for kettle-jem templates" : "Apply kettle-jem templates"
|
|
242
|
+
)
|
|
232
243
|
end
|
|
233
244
|
|
|
234
245
|
def scoped_template_run?(run_options)
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "json"
|
|
4
|
+
require "open3"
|
|
5
|
+
require "rbconfig"
|
|
6
|
+
require "rubygems"
|
|
7
|
+
|
|
8
|
+
module Kettle
|
|
9
|
+
module Jem
|
|
10
|
+
module MaintenanceChangelog
|
|
11
|
+
TEMPLATE_CHANGELOG_INTERNAL_PATHS = %w[
|
|
12
|
+
CHANGELOG.md
|
|
13
|
+
.structuredmerge/kettle-jem.lock
|
|
14
|
+
.kettle-jem.lock
|
|
15
|
+
].freeze
|
|
16
|
+
TEMPLATE_CHANGE_CATEGORIES = {
|
|
17
|
+
workflows: ->(path) { path.start_with?(".github/workflows/") },
|
|
18
|
+
dependencies: ->(path) {
|
|
19
|
+
path == "Gemfile" || path == "Appraisals" || path.end_with?(".gemspec", ".gemfile", ".gemfile.lock") ||
|
|
20
|
+
path.start_with?("gemfiles/")
|
|
21
|
+
},
|
|
22
|
+
documentation: ->(path) { %w[README.md CONTRIBUTING.md SECURITY.md].include?(path) || path.start_with?("docs/") },
|
|
23
|
+
configuration: ->(path) { path.start_with?(".structuredmerge/") || path == "mise.toml" || path == ".gitignore" },
|
|
24
|
+
code_and_tests: ->(path) { path.start_with?("lib/", "spec/", "test/", "bin/") || path == "Rakefile" }
|
|
25
|
+
}.freeze
|
|
26
|
+
BUNDLER_ENVIRONMENT = %w[
|
|
27
|
+
BUNDLE_BIN_PATH
|
|
28
|
+
BUNDLE_FROZEN
|
|
29
|
+
BUNDLE_GEMFILE
|
|
30
|
+
BUNDLE_LOCKFILE
|
|
31
|
+
BUNDLER_SETUP
|
|
32
|
+
BUNDLER_VERSION
|
|
33
|
+
RUBYLIB
|
|
34
|
+
RUBYOPT
|
|
35
|
+
].freeze
|
|
36
|
+
|
|
37
|
+
module_function
|
|
38
|
+
|
|
39
|
+
def add_unreleased_entry(project_root:, section:, entry:)
|
|
40
|
+
command = [
|
|
41
|
+
RbConfig.ruby,
|
|
42
|
+
"-rrubygems",
|
|
43
|
+
"-e",
|
|
44
|
+
'exec Gem.ruby, Gem.bin_path("kettle-changelog", "kettle-changelog"), *ARGV',
|
|
45
|
+
"--",
|
|
46
|
+
"--add-unreleased-entry",
|
|
47
|
+
"--json",
|
|
48
|
+
"--section",
|
|
49
|
+
section.to_s,
|
|
50
|
+
"--entry",
|
|
51
|
+
entry.to_s
|
|
52
|
+
]
|
|
53
|
+
environment = BUNDLER_ENVIRONMENT.to_h { |key| [key, nil] }
|
|
54
|
+
stdout, stderr, status = Open3.capture3(environment, *command, chdir: project_root)
|
|
55
|
+
unless status.success?
|
|
56
|
+
detail = [stdout, stderr].reject(&:empty?).join("\n")
|
|
57
|
+
raise "kettle-changelog failed (exit #{status.exitstatus}): #{detail}"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
result = JSON.parse(stdout)
|
|
61
|
+
{
|
|
62
|
+
status: result.fetch("changed") ? "updated" : "unchanged",
|
|
63
|
+
section: result.fetch("section"),
|
|
64
|
+
entry: result.fetch("entry")
|
|
65
|
+
}
|
|
66
|
+
rescue JSON::ParserError => error
|
|
67
|
+
raise "kettle-changelog returned invalid JSON: #{error.message}"
|
|
68
|
+
rescue Gem::Exception => error
|
|
69
|
+
raise "kettle-changelog executable is not installed: #{error.message}"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def upsert_unreleased_entry(project_root:, section:, key:, entry:, legacy_prefixes: [])
|
|
73
|
+
result = Kettle::Changelog::KeyedEntryUpserter.new(
|
|
74
|
+
root: project_root,
|
|
75
|
+
section: section,
|
|
76
|
+
key: key,
|
|
77
|
+
entry: entry,
|
|
78
|
+
legacy_prefixes: legacy_prefixes
|
|
79
|
+
).run
|
|
80
|
+
result.merge(status: result.fetch(:changed) ? "updated" : "unchanged")
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def record_template_run(project_root:, report:, run_options: {}, label: "Apply kettle-jem templates")
|
|
84
|
+
report = report.to_h
|
|
85
|
+
if template_changelog_disabled?(run_options) || bootstrap_only_report?(report)
|
|
86
|
+
return report.merge(changelog: {status: "skipped", reason: template_changelog_disabled?(run_options) ? "disabled" : "bootstrap_only"})
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
changed_files = template_changed_files(report.fetch(:changed_files, []))
|
|
90
|
+
if changed_files.empty?
|
|
91
|
+
return report.merge(changelog: {status: "skipped", reason: "no_template_changes", changed_files: []})
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
entry = template_run_entry(label, changed_files)
|
|
95
|
+
result = add_unreleased_entry(project_root: project_root, section: "Changed", entry: entry)
|
|
96
|
+
changelog = result.merge(changed_files: changed_files, entry: entry)
|
|
97
|
+
changed_files_with_changelog = if result.fetch(:status) == "updated"
|
|
98
|
+
(Array(report.fetch(:changed_files, [])) + ["CHANGELOG.md"]).uniq.sort
|
|
99
|
+
else
|
|
100
|
+
Array(report.fetch(:changed_files, [])).uniq.sort
|
|
101
|
+
end
|
|
102
|
+
report.merge(changelog: changelog, changed_files: changed_files_with_changelog)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def template_changed_files(changed_files)
|
|
106
|
+
Array(changed_files).map(&:to_s).uniq.sort.reject do |path|
|
|
107
|
+
TEMPLATE_CHANGELOG_INTERNAL_PATHS.include?(path)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def template_run_entry(label, changed_files)
|
|
112
|
+
counts = changed_files.group_by { |path| template_change_category(path) }
|
|
113
|
+
.sort_by { |category, _paths| category.to_s }
|
|
114
|
+
.map { |category, paths| "#{category.to_s.tr("_", " ")} (#{paths.length})" }
|
|
115
|
+
areas = counts.empty? ? "project files" : counts.join(", ")
|
|
116
|
+
"#{label}: updated #{changed_files.length} project file#{"s" unless changed_files.length == 1} across #{areas}."
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def template_change_category(path)
|
|
120
|
+
TEMPLATE_CHANGE_CATEGORIES.each do |category, matcher|
|
|
121
|
+
return category if matcher.call(path)
|
|
122
|
+
end
|
|
123
|
+
:other
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def template_changelog_disabled?(run_options)
|
|
127
|
+
options = run_options.to_h
|
|
128
|
+
DecisionPolicy.value_to_boolean(options[:skip_changelog] || options["skip_changelog"])
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def bootstrap_only_report?(report)
|
|
132
|
+
report.fetch(:setup_status, "").to_s.start_with?("bootstrap_")
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -68,6 +68,7 @@ module Kettle
|
|
|
68
68
|
skip_binstubs: truthy?(env["KETTLE_JEM_SKIP_BINSTUBS"]),
|
|
69
69
|
skip_appraisal_generate: truthy?(env["KETTLE_JEM_SKIP_APPRAISAL_GENERATE"]),
|
|
70
70
|
skip_lock_normalization: truthy?(env["KETTLE_JEM_SKIP_LOCK_NORMALIZATION"]),
|
|
71
|
+
skip_changelog: truthy?(env["KETTLE_JEM_SKIP_CHANGELOG"]),
|
|
71
72
|
checksums: env["KETTLE_JEM_CHECKSUMS"],
|
|
72
73
|
accept_config: truthy?(env["KETTLE_JEM_ACCEPT_CONFIG"]),
|
|
73
74
|
bootstrap_mode: truthy?(env["KETTLE_JEM_BOOTSTRAP_MODE"]),
|
|
@@ -118,7 +118,7 @@ Gem::Specification.new do |spec|
|
|
|
118
118
|
# and preferably a modular one (see gemfiles/modular/*.gemfile).
|
|
119
119
|
|
|
120
120
|
# Dev, Test, & Release Tasks
|
|
121
|
-
spec.add_development_dependency("kettle-dev", "~> 3.0", ">= 3.0.
|
|
121
|
+
spec.add_development_dependency("kettle-dev", "~> 3.0", ">= 3.0.6") # ruby >= {KJ|MIN_TEST_RUBY}
|
|
122
122
|
|
|
123
123
|
# Security
|
|
124
124
|
spec.add_development_dependency("bundler-audit", "~> 0.9.3") # ruby >= 2.0.0
|
|
@@ -12,7 +12,7 @@ gem "kramdown-parser-gfm", "~> 1.1", require: false # Ruby >= 2.3
|
|
|
12
12
|
gem "yaml-converter", "~> 0.2", ">= 0.2.5", require: false # Ruby >= 3.2
|
|
13
13
|
gem "yard", "~> 0.9", ">= 0.9.45", require: false
|
|
14
14
|
gem "yard-junk", "~> 0.1", ">= 0.1.0", require: false # Ruby >= 3.1
|
|
15
|
-
gem "yard-lint", "~> 1.
|
|
15
|
+
gem "yard-lint", "~> 1.11", ">= 1.11.0", require: false # Ruby >= 3.3
|
|
16
16
|
gem "yard-relative_markdown_links", "~> 0.6", require: false
|
|
17
17
|
|
|
18
18
|
if ENV.fetch("GALTZO_FLOSS_DEV", "false").casecmp("false").zero?
|
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
|
30
30
|
spec.add_dependency "{KJ|SHIMMED_GEM_NAME}"
|
|
31
31
|
|
|
32
32
|
# Dev, Test, & Release Tasks
|
|
33
|
-
spec.add_development_dependency("kettle-dev", "~> 3.0", ">= 3.0.
|
|
33
|
+
spec.add_development_dependency("kettle-dev", "~> 3.0", ">= 3.0.6") # ruby >= {KJ|MIN_TEST_RUBY}
|
|
34
34
|
|
|
35
35
|
# Tasks
|
|
36
36
|
spec.add_development_dependency "rake", "~> 13.0"
|
data/lib/kettle/jem/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 = "7.1.
|
|
8
|
+
VERSION = "7.1.4"
|
|
9
9
|
end
|
|
10
10
|
# Current gem version exposed at the traditional constant location.
|
|
11
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
data/lib/kettle/jem.rb
CHANGED
|
@@ -20,9 +20,11 @@ require "ast/crispr/markdown/markly"
|
|
|
20
20
|
require "kettle/ndjson"
|
|
21
21
|
require "rbs"
|
|
22
22
|
require "kettle/dev"
|
|
23
|
+
require "kettle/changelog"
|
|
23
24
|
require "kettle/rb/compat_matrix"
|
|
24
25
|
require_relative "jem/version"
|
|
25
26
|
require_relative "jem/license_txt_migrator"
|
|
27
|
+
require_relative "jem/maintenance_changelog"
|
|
26
28
|
|
|
27
29
|
begin
|
|
28
30
|
require "kettle/drift"
|
|
@@ -5318,10 +5320,10 @@ module Kettle
|
|
|
5318
5320
|
[
|
|
5319
5321
|
{name: "appraisal2", source: %(gem "appraisal2", "~> 3.2", ">= 3.2.2"\n)},
|
|
5320
5322
|
{name: "bundler-audit", source: %(gem "bundler-audit", "~> 0.9.3"\n)},
|
|
5321
|
-
{name: "kettle-dev", source: %(gem "kettle-dev", "~> 3.0", ">= 3.0.
|
|
5323
|
+
{name: "kettle-dev", source: %(gem "kettle-dev", "~> 3.0", ">= 3.0.6"\n)},
|
|
5322
5324
|
{name: "kettle-drift", source: %(gem "kettle-drift", "~> 1.0", ">= 1.0.12"\n)},
|
|
5323
|
-
{name: "kettle-family", source: %(gem "kettle-family", "~> 1.2", ">= 1.2.
|
|
5324
|
-
{name: "kettle-jem", source: %(gem "kettle-jem", "~> 7.1", ">= 7.1.
|
|
5325
|
+
{name: "kettle-family", source: %(gem "kettle-family", "~> 1.2", ">= 1.2.51"\n)},
|
|
5326
|
+
{name: "kettle-jem", source: %(gem "kettle-jem", "~> 7.1", ">= 7.1.3"\n)},
|
|
5325
5327
|
{name: "kettle-test", source: %(gem "kettle-test", "~> 2.0", ">= 2.0.19"\n)},
|
|
5326
5328
|
{name: "rake", source: %(gem "rake", "~> 13.0"\n)},
|
|
5327
5329
|
{name: "rspec", source: %(gem "rspec", "~> 3.0"\n)},
|
|
@@ -6390,37 +6392,11 @@ module Kettle
|
|
|
6390
6392
|
end
|
|
6391
6393
|
|
|
6392
6394
|
def apply_changelog_transfer_entries(content, entries, excluded_keys: [])
|
|
6393
|
-
|
|
6394
|
-
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
normalized = remove_excluded_changelog_transfer_entries(normalized, excluded_keys)
|
|
6399
|
-
existing_keys = changelog_transfer_keys(normalized)
|
|
6400
|
-
missing = transfer_entries.reject { |entry| existing_keys.include?(entry.fetch(:key)) }
|
|
6401
|
-
return ensure_trailing_newline(normalized) if missing.empty?
|
|
6402
|
-
|
|
6403
|
-
lines = markdown_source_lines(normalized)
|
|
6404
|
-
unreleased = changelog_unreleased_line_index(lines)
|
|
6405
|
-
return ensure_trailing_newline(normalized) unless unreleased
|
|
6406
|
-
|
|
6407
|
-
destination_end = changelog_unreleased_end_index(lines, unreleased)
|
|
6408
|
-
destination_body = lines[(unreleased + 1)...destination_end] || []
|
|
6409
|
-
items = changelog_unreleased_items(destination_body)
|
|
6410
|
-
missing.group_by { |entry| entry.fetch(:section, "### Changed") }.each do |section, section_entries|
|
|
6411
|
-
section = CHANGELOG_STANDARD_HEADINGS.include?(section) ? section : "### Changed"
|
|
6412
|
-
items[section] ||= []
|
|
6413
|
-
items[section].pop while items[section].any? && items[section].last.to_s.strip.empty?
|
|
6414
|
-
items[section] << "" if items[section].any?
|
|
6415
|
-
section_entries.each do |entry|
|
|
6416
|
-
items[section].concat(Array(entry.fetch(:lines)).map(&:rstrip))
|
|
6417
|
-
end
|
|
6418
|
-
end
|
|
6419
|
-
|
|
6420
|
-
merged_lines = lines[0...unreleased] +
|
|
6421
|
-
build_changelog_unreleased_section(lines.fetch(unreleased), items) +
|
|
6422
|
-
lines[destination_end..].to_a
|
|
6423
|
-
ensure_trailing_newline(merged_lines.join("\n").gsub(/\n{3,}/, "\n\n"))
|
|
6395
|
+
Kettle::Changelog::TransferMerger.apply(
|
|
6396
|
+
content: normalize_changelog(content, {}),
|
|
6397
|
+
entries: entries,
|
|
6398
|
+
excluded_keys: excluded_keys
|
|
6399
|
+
)
|
|
6424
6400
|
end
|
|
6425
6401
|
|
|
6426
6402
|
def remove_excluded_changelog_transfer_entries(content, excluded_keys)
|
|
@@ -13946,19 +13922,21 @@ module Kettle
|
|
|
13946
13922
|
return "" if package_name == "kettle-changelog"
|
|
13947
13923
|
|
|
13948
13924
|
<<~RUBY.chomp
|
|
13925
|
+
kettle_changelog_skip = ENV.fetch("KETTLE_DEV_SKIP_CHANGELOG", "false").downcase
|
|
13926
|
+
kettle_changelog_skip = %w[true 1 yes on].include?(kettle_changelog_skip)
|
|
13949
13927
|
kettle_changelog_local = ENV.fetch("KETTLE_DEV_DEV", "false").downcase
|
|
13950
13928
|
kettle_changelog_local = !%w[false 0 no off].include?(kettle_changelog_local)
|
|
13951
|
-
|
|
13952
|
-
|
|
13953
|
-
|
|
13954
|
-
|
|
13955
|
-
|
|
13956
|
-
|
|
13957
|
-
|
|
13958
|
-
|
|
13959
|
-
|
|
13960
|
-
|
|
13961
|
-
gem "kettle-changelog", "~> 1.0", ">= 1.0.
|
|
13929
|
+
unless kettle_changelog_skip
|
|
13930
|
+
if kettle_changelog_local
|
|
13931
|
+
require "nomono/bundler"
|
|
13932
|
+
eval_nomono_gems(
|
|
13933
|
+
gems: ["kettle-changelog"],
|
|
13934
|
+
prefix: "KETTLE_DEV",
|
|
13935
|
+
path_env: "KETTLE_DEV_DEV",
|
|
13936
|
+
root: ["src", "my", "kettle-dev"]
|
|
13937
|
+
)
|
|
13938
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("4.0.0")
|
|
13939
|
+
gem "kettle-changelog", "~> 1.0", ">= 1.0.2"
|
|
13962
13940
|
end
|
|
13963
13941
|
end
|
|
13964
13942
|
RUBY
|
|
@@ -14909,7 +14887,7 @@ module Kettle
|
|
|
14909
14887
|
end
|
|
14910
14888
|
|
|
14911
14889
|
def kettle_dev_local_gems(config)
|
|
14912
|
-
gems = %w[kettle-dev kettle-family kettle-test kettle-soup-cover]
|
|
14890
|
+
gems = %w[kettle-dev kettle-family kettle-test kettle-soup-cover kettle-changelog]
|
|
14913
14891
|
plugin_names = PluginLoader.normalize_plugin_names(plugin_names_from_config(config))
|
|
14914
14892
|
gems.concat(plugin_names.select { |plugin_name| plugin_name.start_with?("kettle-") })
|
|
14915
14893
|
gems.uniq.join(" ")
|
|
@@ -14918,7 +14896,7 @@ module Kettle
|
|
|
14918
14896
|
def main_gemfile_kettle_family_gem(package_name)
|
|
14919
14897
|
return "" if package_name.to_s == "kettle-family"
|
|
14920
14898
|
|
|
14921
|
-
%(gem "kettle-family", "~> 1.2", ">= 1.2.
|
|
14899
|
+
%(gem "kettle-family", "~> 1.2", ">= 1.2.51"\n)
|
|
14922
14900
|
end
|
|
14923
14901
|
|
|
14924
14902
|
def main_gemfile_nomono_bootstrap(package_name)
|
|
@@ -19429,9 +19407,9 @@ module Kettle
|
|
|
19429
19407
|
"actions/upload-artifact" => "actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1",
|
|
19430
19408
|
"amancevice/setup-code-climate" => "amancevice/setup-code-climate@0daf2985a225e8ac15975b4d233010e94d65b76a # v2",
|
|
19431
19409
|
"actions/dependency-review-action" => "actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0",
|
|
19432
|
-
"github/codeql-action/init" => "github/codeql-action/init@
|
|
19433
|
-
"github/codeql-action/autobuild" => "github/codeql-action/autobuild@
|
|
19434
|
-
"github/codeql-action/analyze" => "github/codeql-action/analyze@
|
|
19410
|
+
"github/codeql-action/init" => "github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6",
|
|
19411
|
+
"github/codeql-action/autobuild" => "github/codeql-action/autobuild@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6",
|
|
19412
|
+
"github/codeql-action/analyze" => "github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6",
|
|
19435
19413
|
"pozil/auto-assign-issue" => "pozil/auto-assign-issue@af6beea6bdf1e8eb373f061c5bc168681fc6d011 # v4.0.1",
|
|
19436
19414
|
"apache/skywalking-eyes/dependency" => "apache/skywalking-eyes/dependency@61275cc80d0798a405cb070f7d3a8aaf7cf2c2c1 # v0.8.0",
|
|
19437
19415
|
"sarisia/actions-status-discord" => "sarisia/actions-status-discord@eb045afee445dc055c18d3d90bd0f244fd062708 # v1.16.0"
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kettle-jem
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 7.1.
|
|
4
|
+
version: 7.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -217,6 +217,26 @@ dependencies:
|
|
|
217
217
|
- - ">="
|
|
218
218
|
- !ruby/object:Gem::Version
|
|
219
219
|
version: 7.1.3
|
|
220
|
+
- !ruby/object:Gem::Dependency
|
|
221
|
+
name: kettle-changelog
|
|
222
|
+
requirement: !ruby/object:Gem::Requirement
|
|
223
|
+
requirements:
|
|
224
|
+
- - "~>"
|
|
225
|
+
- !ruby/object:Gem::Version
|
|
226
|
+
version: '1.0'
|
|
227
|
+
- - ">="
|
|
228
|
+
- !ruby/object:Gem::Version
|
|
229
|
+
version: 1.0.2
|
|
230
|
+
type: :runtime
|
|
231
|
+
prerelease: false
|
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
233
|
+
requirements:
|
|
234
|
+
- - "~>"
|
|
235
|
+
- !ruby/object:Gem::Version
|
|
236
|
+
version: '1.0'
|
|
237
|
+
- - ">="
|
|
238
|
+
- !ruby/object:Gem::Version
|
|
239
|
+
version: 1.0.2
|
|
220
240
|
- !ruby/object:Gem::Dependency
|
|
221
241
|
name: kettle-dev
|
|
222
242
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -760,6 +780,7 @@ files:
|
|
|
760
780
|
- lib/kettle/jem.rb
|
|
761
781
|
- lib/kettle/jem/cli.rb
|
|
762
782
|
- lib/kettle/jem/license_txt_migrator.rb
|
|
783
|
+
- lib/kettle/jem/maintenance_changelog.rb
|
|
763
784
|
- lib/kettle/jem/rakelib/install.rake
|
|
764
785
|
- lib/kettle/jem/rakelib/prepare.rake
|
|
765
786
|
- lib/kettle/jem/rakelib/selftest.rake
|
|
@@ -955,10 +976,10 @@ licenses:
|
|
|
955
976
|
- PolyForm-Small-Business-1.0.0
|
|
956
977
|
metadata:
|
|
957
978
|
homepage_uri: https://structuredmerge.org
|
|
958
|
-
source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.
|
|
959
|
-
changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.
|
|
979
|
+
source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.4
|
|
980
|
+
changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.4/CHANGELOG.md
|
|
960
981
|
bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
|
|
961
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-jem/7.1.
|
|
982
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-jem/7.1.4
|
|
962
983
|
funding_uri: https://github.com/sponsors/pboling
|
|
963
984
|
wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
|
|
964
985
|
news_uri: https://www.railsbling.com/tags/kettle-jem
|
metadata.gz.sig
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
����Ji<��
|
|
2
|
+
��X�~h'�`�8�;��O�`��l/>c��n�.Y�N�_��3#�g�ޏ<��횚�]���!�M�9GnJÎ���K�w3(hC�<dr&��=��&�+ɶ��ʚ�p;Tg���v�[X�,"T'jȞPHY�d�`T~.�,'��� adI�NJ�AlF8)�_�@���B�B�P&��rE�W88q Z�T}��n�x�E�f��H�|���T>J�8���+�z~��}P�4������g'���~��EMw{
|