36 lines
1.4 KiB
Bash
Executable File
36 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Produce a dictionary for the current yq release,
|
|
# suitable for adding to lib/private/yq_toolchain.bzl
|
|
|
|
set -o errexit -o nounset -o pipefail
|
|
|
|
# Find the latest version
|
|
if [ "${1:-}" ]; then
|
|
version=$1
|
|
else
|
|
version=$(curl --silent "https://api.github.com/repos/mikefarah/yq/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
|
|
fi
|
|
|
|
# yq publishes its checksums and a script to extract them
|
|
curl --silent --location "https://github.com/mikefarah/yq/releases/download/v$version/extract-checksum.sh" -o /tmp/extract-checksum.sh
|
|
curl --silent --location "https://github.com/mikefarah/yq/releases/download/v$version/checksums_hashes_order" -o /tmp/checksums_hashes_order
|
|
curl --silent --location "https://github.com/mikefarah/yq/releases/download/v$version/checksums" -o /tmp/checksums
|
|
|
|
cd /tmp
|
|
chmod u+x extract-checksum.sh
|
|
|
|
# Extract the checksums and output a starlark map entry
|
|
echo "\"$version\": {"
|
|
platforms=(darwin_{amd64,arm64} linux_{amd64,arm64,s390x,ppc64le} windows_amd64)
|
|
for release in ${platforms[@]}; do
|
|
artifact=$release
|
|
if [[ $release == windows* ]]; then
|
|
artifact="$release.exe"
|
|
fi
|
|
echo " \"$release\": \"$(./extract-checksum.sh SHA-384 $artifact | awk '{ print $2 }' | xxd -r -p | base64 | awk '{ print "sha384-" $1 }' )\","
|
|
done
|
|
echo "},"
|
|
|
|
printf "\n"
|
|
echo "Paste the above into VERSIONS in yq_toolchain.bzl."
|