bake-gem-github 0.0.4 → 0.0.5

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: 4735f2868944c94abee367842703cfe4745f88ec294d51860429341836c1ecaf
4
- data.tar.gz: 7a563f21e720e5cdfeca1317c33ad186df80166527a24bb77a47abb8e44f9fff
3
+ metadata.gz: eb1ff7b71712625bd0f0732c6a945b72d555d7ccf0f318314500f61b626269aa
4
+ data.tar.gz: 627281b137b7161bd0f57d208f73cf8fa9e559cee46a63be7545c64e6a3ab24b
5
5
  SHA512:
6
- metadata.gz: 33c752172d515f9da968f6bc3d1cc4314827911cf35e9963f776305ba60e0ee17e101467ce7c9649e7c18819d5d7af9a5222139fa18b29dfd7377f980d08281e
7
- data.tar.gz: 4435c8940407b4dbd81f45eb08e2b21e87b69dbe1950987ba2e0ebda9479624debd453c09d2966297e5dc26a34e54b48934aac04b1c7aba8eeacfe7e62f12540
6
+ metadata.gz: 7e9e4d0798361689b919529a75415764c3d1d575737b5368a0bee445d406e399e8eba72a6eeee735bd01581912da8cb53496a48deff91d311b275cfe995590fa
7
+ data.tar.gz: ad0ade7c470f26b865b4dce5f7cee96af8f6042daf0ff35a5363a7393098ea414ee03233cfc92a70d1b622a7d83c57188e01aee3f6953d34af8b1fe903f5111d
checksums.yaml.gz.sig CHANGED
Binary file
@@ -120,7 +120,16 @@ module Bake
120
120
  pages = JSON.parse(readlines("gh", "api", "--paginate", "--slurp", "repos/#{@repository}/releases?per_page=100", chdir: @root).join)
121
121
  matches = pages.flatten(1).select{|release| release.fetch("tag_name") == tag}
122
122
  raise "Multiple GitHub releases have the same tag." if matches.size > 1
123
- matches.first
123
+ if release = matches.first
124
+ return api("releases/#{release.fetch('id')}")
125
+ end
126
+ # Resolve pending tags directly when the REST list has not caught up:
127
+ owner, name = @repository.split("/", 2)
128
+ query = "query($owner: String!, $name: String!, $tag: String!) { repository(owner: $owner, name: $name) { release(tagName: $tag) { databaseId } } }"
129
+ result = JSON.parse(readlines("gh", "api", "graphql", "-f", "query=#{query}", "-f", "owner=#{owner}", "-f", "name=#{name}", "-f", "tag=#{tag}", chdir: @root).join)
130
+ if release = result.fetch("data").fetch("repository").fetch("release")
131
+ api("releases/#{release.fetch('databaseId')}")
132
+ end
124
133
  end
125
134
 
126
135
  def guard_release(release, commit)
@@ -137,12 +146,15 @@ module Bake
137
146
  tag = "v#{receipt.fetch(:version)}"
138
147
  release = github_release(tag)
139
148
  unless release
140
- Tempfile.create("release-notes") do |file|
141
- file.write("#{receipt.fetch(:pull_request_url)}\n\nSource: #{receipt.fetch(:commit)}\nSHA256: #{receipt.fetch(:sha256)}\n\nSee releases.md at the release tag for release notes.\n")
149
+ Tempfile.create("release") do |file|
150
+ file.write(JSON.generate(
151
+ tag_name: tag, draft: true, target_commitish: receipt.fetch(:commit), name: "#{receipt.fetch(:name)} #{tag}",
152
+ body: "#{receipt.fetch(:pull_request_url)}\n\nSource: #{receipt.fetch(:commit)}\nSHA256: #{receipt.fetch(:sha256)}\n\nSee releases.md at the release tag for release notes.\n"
153
+ ))
142
154
  file.flush
143
- system("gh", "release", "create", tag, "--repo", @repository, "--draft", "--target", receipt.fetch(:commit), "--title", "#{receipt.fetch(:name)} #{tag}", "--notes-file", file.path, chdir: @root)
155
+ # The release list can remain stale after a successful creation:
156
+ release = JSON.parse(readlines("gh", "api", "repos/#{@repository}/releases", "--method", "POST", "--input", file.path, chdir: @root).join)
144
157
  end
145
- release = github_release(tag) or raise "Draft release was not retained."
146
158
  end
147
159
  guard_release(release, receipt.fetch(:commit))
148
160
  assets = release.fetch("assets")
@@ -9,7 +9,7 @@ module Bake
9
9
  module Gem
10
10
  # GitHub pull request and release orchestration for bake-gem.
11
11
  module GitHub
12
- VERSION = "0.0.4"
12
+ VERSION = "0.0.5"
13
13
  end
14
14
  end
15
15
  end
data/releases.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Releases
2
2
 
3
+ ## v0.0.5
4
+
5
+ - Preserve and recover release files even when GitHub's release list is stale.
6
+
3
7
  ## v0.0.4
4
8
 
5
9
  - Preserve verified release files in a draft GitHub release before uploading to RubyGems, so reruns can recover when Actions artifacts disappear.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bake-gem-github
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
metadata.gz.sig CHANGED
Binary file