kettle-dev 3.0.24 → 3.0.26
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 +27 -1
- data/README.md +1 -1
- data/lib/kettle/dev/release_cli.rb +58 -11
- 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: 1582fd7f0bbd245a22585ae5194634a4196eba3a8f4fab15f7b021b07f26d369
|
|
4
|
+
data.tar.gz: d2797c4e806c11031b7c981f5110b4d3b5e9ba06bed4b285ee383c16c9c60eec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 561944e1c04ad428df2cf80c4bbd86ae65330b1a15f0ce749502a94ad788fa529602200a1db82df57e07ea8f003fb918da69661c2ff91d28b5598b12f7b6a3c5
|
|
7
|
+
data.tar.gz: ad54887f5ca42fb2f494ab7545aa1adfb5804e3dfe8a37ca3ead4097580f29330ee68773f5a8c0fc37640770113a6af9073fcd45cef2611871e5d75e6ec1fa67
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,28 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [3.0.26] - 2026-08-31
|
|
34
|
+
|
|
35
|
+
- TAG: [v3.0.26][3.0.26t]
|
|
36
|
+
- COVERAGE: 91.60% -- 5967/6514 lines in 47 files
|
|
37
|
+
- BRANCH COVERAGE: 76.17% -- 2286/3001 branches in 47 files
|
|
38
|
+
- 50.47% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Refresh existing GitHub Release notes while backfilling missing assets.
|
|
43
|
+
|
|
44
|
+
## [3.0.25] - 2026-08-31
|
|
45
|
+
|
|
46
|
+
- TAG: [v3.0.25][3.0.25t]
|
|
47
|
+
- COVERAGE: 91.30% -- 5949/6516 lines in 47 files
|
|
48
|
+
- BRANCH COVERAGE: 76.09% -- 2282/2999 branches in 47 files
|
|
49
|
+
- 50.47% documented
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- Attach missing assets when recovering an existing GitHub Release.
|
|
54
|
+
|
|
33
55
|
## [3.0.24] - 2026-08-31
|
|
34
56
|
|
|
35
57
|
- TAG: [v3.0.24][3.0.24t]
|
|
@@ -3725,7 +3747,11 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
3725
3747
|
- Selecting will run the selected workflow via `act`
|
|
3726
3748
|
- This may move to its own gem in the future.
|
|
3727
3749
|
|
|
3728
|
-
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.
|
|
3750
|
+
[Unreleased]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.26...HEAD
|
|
3751
|
+
[3.0.26]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.25...v3.0.26
|
|
3752
|
+
[3.0.26t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.26
|
|
3753
|
+
[3.0.25]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.24...v3.0.25
|
|
3754
|
+
[3.0.25t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.25
|
|
3729
3755
|
[3.0.24]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.23...v3.0.24
|
|
3730
3756
|
[3.0.24t]: https://github.com/kettle-dev/kettle-dev/releases/tag/v3.0.24
|
|
3731
3757
|
[3.0.23]: https://github.com/kettle-dev/kettle-dev/compare/v3.0.22...v3.0.23
|
data/README.md
CHANGED
|
@@ -1066,7 +1066,7 @@ Thanks for RTFM. ☺️
|
|
|
1066
1066
|
[📌gitmoji]: https://gitmoji.dev
|
|
1067
1067
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1068
1068
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1069
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.
|
|
1069
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-6.514-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
1070
1070
|
[🔐security]: https://github.com/kettle-dev/kettle-dev/blob/main/SECURITY.md
|
|
1071
1071
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1072
1072
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -3066,9 +3066,18 @@ module Kettle
|
|
|
3066
3066
|
failed_asset = asset_messages.find { |ok, _message| !ok }
|
|
3067
3067
|
failed_asset || [true, "created with #{asset_messages.length} assets"]
|
|
3068
3068
|
else
|
|
3069
|
-
# If release already exists, treat as non-fatal
|
|
3070
3069
|
if res.code.to_s == "422" && res.body.to_s.include?("already_exists")
|
|
3071
|
-
[true, "already exists"]
|
|
3070
|
+
return [true, "already exists"] if Array(assets).empty?
|
|
3071
|
+
|
|
3072
|
+
update_existing_github_release_with_assets(
|
|
3073
|
+
owner: owner,
|
|
3074
|
+
repo: repo,
|
|
3075
|
+
token: token,
|
|
3076
|
+
tag: tag,
|
|
3077
|
+
title: title,
|
|
3078
|
+
body: body,
|
|
3079
|
+
assets: assets
|
|
3080
|
+
)
|
|
3072
3081
|
else
|
|
3073
3082
|
[false, "HTTP #{res.code}: #{res.body}"]
|
|
3074
3083
|
end
|
|
@@ -3077,6 +3086,46 @@ module Kettle
|
|
|
3077
3086
|
[false, "#{e.class}: #{e.message}"]
|
|
3078
3087
|
end
|
|
3079
3088
|
|
|
3089
|
+
def update_existing_github_release_with_assets(owner:, repo:, token:, tag:, title:, body:, assets:)
|
|
3090
|
+
release, error = github_release_for_tag(owner: owner, repo: repo, token: token, tag: tag)
|
|
3091
|
+
return [false, error] unless release
|
|
3092
|
+
|
|
3093
|
+
updated, error = github_update_release_by_id(
|
|
3094
|
+
release.fetch("id"),
|
|
3095
|
+
owner: owner,
|
|
3096
|
+
repo: repo,
|
|
3097
|
+
token: token,
|
|
3098
|
+
title: title,
|
|
3099
|
+
body: body
|
|
3100
|
+
)
|
|
3101
|
+
return [false, error] unless updated
|
|
3102
|
+
|
|
3103
|
+
existing_names = Array(release["assets"]).filter_map { |asset| asset["name"] }.to_set
|
|
3104
|
+
missing_assets = Array(assets).reject { |asset| existing_names.include?(File.basename(asset)) }
|
|
3105
|
+
return [true, "updated existing release with all assets present"] if missing_assets.empty?
|
|
3106
|
+
|
|
3107
|
+
asset_messages = missing_assets.map do |asset|
|
|
3108
|
+
github_upload_release_asset(release.fetch("id"), owner: owner, repo: repo, token: token, path: asset)
|
|
3109
|
+
end
|
|
3110
|
+
failed_asset = asset_messages.find { |ok, _message| !ok }
|
|
3111
|
+
asset_noun = asset_messages.one? ? "asset" : "assets"
|
|
3112
|
+
failed_asset || [true, "updated existing release with #{asset_messages.length} #{asset_noun} uploaded"]
|
|
3113
|
+
end
|
|
3114
|
+
|
|
3115
|
+
def github_release_for_tag(owner:, repo:, token:, tag:)
|
|
3116
|
+
uri = URI("https://api.github.com/repos/#{owner}/#{repo}/releases/tags/#{tag}")
|
|
3117
|
+
request = Net::HTTP::Get.new(uri)
|
|
3118
|
+
request["Accept"] = "application/vnd.github+json"
|
|
3119
|
+
request["Authorization"] = "token #{token}"
|
|
3120
|
+
request["User-Agent"] = "kettle-dev-release-cli"
|
|
3121
|
+
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(request) }
|
|
3122
|
+
return [JSON.parse(response.body), nil] if response.is_a?(Net::HTTPSuccess)
|
|
3123
|
+
|
|
3124
|
+
[nil, "release #{tag} was not found (HTTP #{response.code})"]
|
|
3125
|
+
rescue => e
|
|
3126
|
+
[nil, "#{e.class}: #{e.message}"]
|
|
3127
|
+
end
|
|
3128
|
+
|
|
3080
3129
|
def github_upload_release_asset(release_id, owner:, repo:, token:, path:)
|
|
3081
3130
|
path = File.expand_path(path)
|
|
3082
3131
|
return [false, "asset does not exist: #{path}"] unless File.file?(path)
|
|
@@ -3098,15 +3147,13 @@ module Kettle
|
|
|
3098
3147
|
end
|
|
3099
3148
|
|
|
3100
3149
|
def github_update_release(owner:, repo:, token:, tag:, title:, body:)
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
id = JSON.parse(release.body).fetch("id")
|
|
3150
|
+
release, error = github_release_for_tag(owner: owner, repo: repo, token: token, tag: tag)
|
|
3151
|
+
return [false, error] unless release
|
|
3152
|
+
|
|
3153
|
+
github_update_release_by_id(release.fetch("id"), owner: owner, repo: repo, token: token, title: title, body: body)
|
|
3154
|
+
end
|
|
3155
|
+
|
|
3156
|
+
def github_update_release_by_id(id, owner:, repo:, token:, title:, body:)
|
|
3110
3157
|
uri = URI("https://api.github.com/repos/#{owner}/#{repo}/releases/#{id}")
|
|
3111
3158
|
request = Net::HTTP::Patch.new(uri)
|
|
3112
3159
|
request["Accept"] = "application/vnd.github+json"
|
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.26"
|
|
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.26
|
|
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.26
|
|
404
|
+
changelog_uri: https://github.com/kettle-dev/kettle-dev/blob/v3.0.26/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.26
|
|
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
|