Skip to content

Commit 1ad710f

Browse files
Match release asset names from checksums
Co-authored-by: Andrew <andrewxhill@gmail.com>
1 parent fa4200b commit 1ad710f

3 files changed

Lines changed: 59 additions & 4 deletions

File tree

scripts/generate-homebrew-formula.sh

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,25 @@ sha_for() {
4141
awk -v bare="${name}" -v dotted="./${name}" '$2 == bare || $2 == dotted { print $1; exit }' "${checksums}"
4242
}
4343

44-
darwin_amd64_archive="mainline_${version}_darwin_amd64.tar.gz"
45-
darwin_arm64_archive="mainline_${version}_darwin_arm64.tar.gz"
44+
resolve_archive_name() {
45+
local goos="$1"
46+
local goarch="$2"
47+
local ext="$3"
48+
local with_tag="mainline_${version}_${goos}_${goarch}.${ext}"
49+
local stripped="mainline_${version#v}_${goos}_${goarch}.${ext}"
50+
if [[ -n "$(sha_for "${with_tag}")" ]]; then
51+
printf '%s\n' "${with_tag}"
52+
return
53+
fi
54+
if [[ -n "$(sha_for "${stripped}")" ]]; then
55+
printf '%s\n' "${stripped}"
56+
return
57+
fi
58+
printf '%s\n' "${with_tag}"
59+
}
60+
61+
darwin_amd64_archive="$(resolve_archive_name darwin amd64 tar.gz)"
62+
darwin_arm64_archive="$(resolve_archive_name darwin arm64 tar.gz)"
4663
darwin_amd64_sha="$(sha_for "${darwin_amd64_archive}")"
4764
darwin_arm64_sha="$(sha_for "${darwin_arm64_archive}")"
4865

scripts/generate-release-manifest.sh

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,23 @@ sha_for() {
6363
awk -v bare="${name}" -v dotted="./${name}" '$2 == bare || $2 == dotted { print $1; exit }' "${checksums}"
6464
}
6565

66+
resolve_archive_name() {
67+
local goos="$1"
68+
local goarch="$2"
69+
local ext="$3"
70+
local with_tag="mainline_${version}_${goos}_${goarch}.${ext}"
71+
local stripped="mainline_${version#v}_${goos}_${goarch}.${ext}"
72+
if [[ -n "$(sha_for "${with_tag}")" ]]; then
73+
printf '%s\n' "${with_tag}"
74+
return
75+
fi
76+
if [[ -n "$(sha_for "${stripped}")" ]]; then
77+
printf '%s\n' "${stripped}"
78+
return
79+
fi
80+
printf '%s\n' "${with_tag}"
81+
}
82+
6683
{
6784
printf '{\n'
6885
printf ' "version": %s,\n' "$(json_escape "${version}")"
@@ -81,9 +98,9 @@ sha_for() {
8198
set -- ${target}
8299
goos="$1"
83100
goarch="$2"
84-
name="mainline_${version}_${goos}_${goarch}.tar.gz"
101+
name="$(resolve_archive_name "${goos}" "${goarch}" "tar.gz")"
85102
if [[ "${goos}" = "windows" ]]; then
86-
name="mainline_${version}_${goos}_${goarch}.zip"
103+
name="$(resolve_archive_name "${goos}" "${goarch}" "zip")"
87104
fi
88105
sha="$(sha_for "${name}")"
89106
if [[ -z "${sha}" ]]; then

scripts/test-build-release.sh

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,27 @@ sed 's# \./# #g' "${output_dir}/SHA256SUMS" > "${bare_checksums}"
3434
ruby -c "${output_dir}/mainline.rb" >/dev/null
3535
grep -q '"name": "mainline_v0.0.0-test_darwin_amd64.tar.gz"' "${output_dir}/release-manifest.json"
3636

37+
goreleaser_checksums="${output_dir}/SHA256SUMS.goreleaser"
38+
cp "${output_dir}/mainline_v0.0.0-test_darwin_amd64.tar.gz" "${output_dir}/mainline_0.0.0-test_darwin_amd64.tar.gz"
39+
cp "${output_dir}/mainline_v0.0.0-test_darwin_arm64.tar.gz" "${output_dir}/mainline_0.0.0-test_darwin_arm64.tar.gz"
40+
cp "${output_dir}/mainline_v0.0.0-test_linux_amd64.tar.gz" "${output_dir}/mainline_0.0.0-test_linux_amd64.tar.gz"
41+
cp "${output_dir}/mainline_v0.0.0-test_linux_arm64.tar.gz" "${output_dir}/mainline_0.0.0-test_linux_arm64.tar.gz"
42+
cp "${output_dir}/mainline_v0.0.0-test_windows_amd64.zip" "${output_dir}/mainline_0.0.0-test_windows_amd64.zip"
43+
cp "${output_dir}/mainline_v0.0.0-test_windows_arm64.zip" "${output_dir}/mainline_0.0.0-test_windows_arm64.zip"
44+
cat > "${goreleaser_checksums}" <<EOF
45+
$(shasum -a 256 "${output_dir}/mainline_0.0.0-test_darwin_amd64.tar.gz" | sed "s#${output_dir}/##")
46+
$(shasum -a 256 "${output_dir}/mainline_0.0.0-test_darwin_arm64.tar.gz" | sed "s#${output_dir}/##")
47+
$(shasum -a 256 "${output_dir}/mainline_0.0.0-test_linux_amd64.tar.gz" | sed "s#${output_dir}/##")
48+
$(shasum -a 256 "${output_dir}/mainline_0.0.0-test_linux_arm64.tar.gz" | sed "s#${output_dir}/##")
49+
$(shasum -a 256 "${output_dir}/mainline_0.0.0-test_windows_amd64.zip" | sed "s#${output_dir}/##")
50+
$(shasum -a 256 "${output_dir}/mainline_0.0.0-test_windows_arm64.zip" | sed "s#${output_dir}/##")
51+
EOF
52+
"${repo_root}/scripts/generate-homebrew-formula.sh" --version v0.0.0-test --checksums "${goreleaser_checksums}" --output "${output_dir}/mainline-goreleaser.rb"
53+
"${repo_root}/scripts/generate-release-manifest.sh" --version v0.0.0-test --checksums "${goreleaser_checksums}" --output "${output_dir}/release-manifest-goreleaser.json"
54+
ruby -c "${output_dir}/mainline-goreleaser.rb" >/dev/null
55+
grep -q 'mainline_0.0.0-test_darwin_amd64.tar.gz' "${output_dir}/mainline-goreleaser.rb"
56+
grep -q '"name": "mainline_0.0.0-test_darwin_amd64.tar.gz"' "${output_dir}/release-manifest-goreleaser.json"
57+
3758
host_os="$(uname -s | tr '[:upper:]' '[:lower:]')"
3859
host_arch="$(uname -m)"
3960
case "${host_arch}" in

0 commit comments

Comments
 (0)