kettle-dev 2.3.6 → 2.3.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +16 -1
- data/README.md +1 -1
- data/lib/kettle/dev/gha_sha_pins_cli.rb +49 -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: 4e582c50d05608c5e338caeac74f7c339fb2d66010b58c8cce836a78d8e4ded5
|
|
4
|
+
data.tar.gz: e9ce2e0857dbf506017c8ddab46c5049ffc5003af5778a2e2954dd759cee8183
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cea8e2be14321cc1e70534197cd2b01dea382a62f6de651ebfb35ccf1025acdfb0a11ee74c31e7c5c78dfe216ec51fdbe21a02f4f1358b6e8b526365b9a5f5af
|
|
7
|
+
data.tar.gz: 47dada022728fd8414d252df3d01ecb992f18ccea69ed20ed8670dbd87ab3cf7f205bb488a48ab95039a4548a0b278c5e8aaf7099b7d94248539db5e7630c26b
|
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
|
+
## [2.3.7] - 2026-07-18
|
|
34
|
+
|
|
35
|
+
- TAG: [v2.3.7][2.3.7t]
|
|
36
|
+
- COVERAGE: 91.84% -- 4311/4694 lines in 36 files
|
|
37
|
+
- BRANCH COVERAGE: 74.20% -- 1694/2283 branches in 36 files
|
|
38
|
+
- 56.25% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- `kettle-gha-sha-pins` now canonicalizes duplicate equivalent action tags,
|
|
43
|
+
preferring explicit release tags such as `v7.0.0` over major-line aliases
|
|
44
|
+
such as `v7`, so adjacent version comments do not flip between spellings.
|
|
45
|
+
|
|
33
46
|
## [2.3.6] - 2026-07-17
|
|
34
47
|
|
|
35
48
|
- TAG: [v2.3.6][2.3.6t]
|
|
@@ -2523,7 +2536,9 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
2523
2536
|
- Selecting will run the selected workflow via `act`
|
|
2524
2537
|
- This may move to its own gem in the future.
|
|
2525
2538
|
|
|
2526
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.3.
|
|
2539
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v2.3.7...HEAD
|
|
2540
|
+
[2.3.7]: https://github.com/kettle-dev/kettle-dev/compare/v2.3.6...v2.3.7
|
|
2541
|
+
[2.3.7t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.3.7
|
|
2527
2542
|
[2.3.6]: https://github.com/kettle-dev/kettle-dev/compare/v2.3.5...v2.3.6
|
|
2528
2543
|
[2.3.6t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v2.3.6
|
|
2529
2544
|
[2.3.5]: https://github.com/kettle-dev/kettle-dev/compare/v2.3.4...v2.3.5
|
data/README.md
CHANGED
|
@@ -887,7 +887,7 @@ Thanks for RTFM. ☺️
|
|
|
887
887
|
[📌gitmoji]: https://gitmoji.dev
|
|
888
888
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
889
889
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
890
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.
|
|
890
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-4.694-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
891
891
|
[🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
|
|
892
892
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
893
893
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -35,6 +35,23 @@ module Kettle
|
|
|
35
35
|
VERSION_COMMENT_SUFFIX_RE = /\A\s+#\s*v?(?<version>\d+(?:\.\d+\.\d+(?:[-.]?[0-9A-Za-z.-]+)?)?)/
|
|
36
36
|
VERSION_COMMENT_REPLACEMENT_RE = /\A(?<prefix>\s+#\s*)v?\d+(?:\.\d+\.\d+(?:[-.]?[0-9A-Za-z.-]+)?)?/
|
|
37
37
|
|
|
38
|
+
def self.release_version_sort_key(entry)
|
|
39
|
+
[entry.fetch(:version_obj), *release_version_specificity(entry)]
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.release_version_specificity(entry)
|
|
43
|
+
text = entry.fetch(:tag).to_s.sub(/\A[vV]/, "")
|
|
44
|
+
release_text, suffix = text.split(/[-.](?=[A-Za-z])/, 2)
|
|
45
|
+
numeric_segments = release_text.to_s.split(".").take_while { |part| part.match?(/\A\d+\z/) }
|
|
46
|
+
|
|
47
|
+
[
|
|
48
|
+
numeric_segments.length,
|
|
49
|
+
suffix ? 0 : 1,
|
|
50
|
+
text.length,
|
|
51
|
+
entry.fetch(:tag).to_s
|
|
52
|
+
]
|
|
53
|
+
end
|
|
54
|
+
|
|
38
55
|
def initialize(argv, err: $stderr)
|
|
39
56
|
@argv = argv
|
|
40
57
|
@err = err
|
|
@@ -521,7 +538,7 @@ module Kettle
|
|
|
521
538
|
end
|
|
522
539
|
end
|
|
523
540
|
|
|
524
|
-
candidates.max_by { |entry| entry
|
|
541
|
+
candidates.max_by { |entry| release_version_sort_key(entry) }
|
|
525
542
|
end
|
|
526
543
|
|
|
527
544
|
def major_line_version?(value)
|
|
@@ -538,7 +555,7 @@ module Kettle
|
|
|
538
555
|
entry[:version_obj] > current &&
|
|
539
556
|
(!entry[:version_obj].prerelease? || current.prerelease?)
|
|
540
557
|
end
|
|
541
|
-
.max_by { |entry| entry
|
|
558
|
+
.max_by { |entry| release_version_sort_key(entry) }
|
|
542
559
|
end
|
|
543
560
|
|
|
544
561
|
def determine_upgrade_plan(old_ref:, repo_ref:, versions:, upgrade_level:, client:)
|
|
@@ -645,6 +662,10 @@ module Kettle
|
|
|
645
662
|
sha
|
|
646
663
|
end
|
|
647
664
|
|
|
665
|
+
def release_version_sort_key(entry)
|
|
666
|
+
self.class.release_version_sort_key(entry)
|
|
667
|
+
end
|
|
668
|
+
|
|
648
669
|
def short_sha?(candidate)
|
|
649
670
|
return false unless candidate
|
|
650
671
|
WEAK_SHA_RE.match?(candidate)
|
|
@@ -1061,10 +1082,10 @@ module Kettle
|
|
|
1061
1082
|
full_semver_entries = entries.reject { |entry| major_line_version?(entry[:version]) }
|
|
1062
1083
|
{
|
|
1063
1084
|
"patch" => full_semver_entries.group_by { |entry| entry[:version_obj].segments[0, 2].join(".") }
|
|
1064
|
-
.transform_values { |group| serialize_target(group.max_by { |entry| entry
|
|
1085
|
+
.transform_values { |group| serialize_target(group.max_by { |entry| GhaShaPinsCLI.release_version_sort_key(entry) }) },
|
|
1065
1086
|
"minor" => full_semver_entries.group_by { |entry| entry[:version_obj].segments[0].to_s }
|
|
1066
|
-
.transform_values { |group| serialize_target(group.max_by { |entry| entry
|
|
1067
|
-
"major" => {"*" => serialize_target(entries.max_by { |entry| entry
|
|
1087
|
+
.transform_values { |group| serialize_target(group.max_by { |entry| GhaShaPinsCLI.release_version_sort_key(entry) }) },
|
|
1088
|
+
"major" => {"*" => serialize_target(entries.max_by { |entry| GhaShaPinsCLI.release_version_sort_key(entry) })}
|
|
1068
1089
|
}
|
|
1069
1090
|
end
|
|
1070
1091
|
|
|
@@ -1212,12 +1233,34 @@ module Kettle
|
|
|
1212
1233
|
}
|
|
1213
1234
|
end
|
|
1214
1235
|
releases.concat(tag_versions)
|
|
1236
|
+
releases = canonicalize_equivalent_release_versions(releases)
|
|
1215
1237
|
|
|
1216
|
-
releases.sort_by! { |release| release
|
|
1238
|
+
releases.sort_by! { |release| GhaShaPinsCLI.release_version_sort_key(release) }
|
|
1217
1239
|
releases.reverse!
|
|
1218
1240
|
releases
|
|
1219
1241
|
end
|
|
1220
1242
|
|
|
1243
|
+
def canonicalize_equivalent_release_versions(releases)
|
|
1244
|
+
groups = []
|
|
1245
|
+
releases.each do |release|
|
|
1246
|
+
group = groups.find { |entries| equivalent_release_tag?(entries.first, release) }
|
|
1247
|
+
if group
|
|
1248
|
+
group << release
|
|
1249
|
+
else
|
|
1250
|
+
groups << [release]
|
|
1251
|
+
end
|
|
1252
|
+
end
|
|
1253
|
+
|
|
1254
|
+
groups.map { |entries| entries.max_by { |entry| GhaShaPinsCLI.release_version_sort_key(entry) } }
|
|
1255
|
+
end
|
|
1256
|
+
|
|
1257
|
+
def equivalent_release_tag?(left, right)
|
|
1258
|
+
left[:version_obj] == right[:version_obj] &&
|
|
1259
|
+
left[:sha] &&
|
|
1260
|
+
right[:sha] &&
|
|
1261
|
+
left[:sha] == right[:sha]
|
|
1262
|
+
end
|
|
1263
|
+
|
|
1221
1264
|
def parse_release_version_text(value)
|
|
1222
1265
|
normalized = value.to_s.sub(/\A[vV]/, "")
|
|
1223
1266
|
return nil unless normalized.match?(/\A(?:\d+|\d+\.\d+\.\d+(?:[-.]?[0-9A-Za-z.-]+)?)\z/)
|
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: 2.3.
|
|
4
|
+
version: 2.3.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -313,10 +313,10 @@ licenses:
|
|
|
313
313
|
- AGPL-3.0-only
|
|
314
314
|
metadata:
|
|
315
315
|
homepage_uri: https://kettle-dev.galtzo.com
|
|
316
|
-
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.3.
|
|
317
|
-
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.3.
|
|
316
|
+
source_code_uri: https://github.com/kettle-dev/kettle-dev/tree/v2.3.7
|
|
317
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v2.3.7/CHANGELOG.md
|
|
318
318
|
bug_tracker_uri: https://github.com/kettle-dev/kettle-dev/issues
|
|
319
|
-
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.3.
|
|
319
|
+
documentation_uri: https://www.rubydoc.info/gems/kettle-dev/2.3.7
|
|
320
320
|
funding_uri: https://github.com/sponsors/pboling
|
|
321
321
|
wiki_uri: https://github.com/kettle-dev/kettle-dev/wiki
|
|
322
322
|
news_uri: https://www.railsbling.com/tags/kettle-dev
|
metadata.gz.sig
CHANGED
|
Binary file
|