en/docs/development/ci/tool-versions.sh

49 lines
1.5 KiB
Bash
Executable file

#!/usr/bin/env sh
tools="
casey/just just-%VERSION%-x86_64-unknown-linux-musl.tar.gz
taiki-e/cargo-llvm-cov cargo-llvm-cov-x86_64-unknown-linux-gnu.tar.gz
"
get_release() {
curl -sSL \
-H "Accept: application/json" \
"https://api.github.com/repos/$1/releases/latest"
}
q() { printf '%s' "$1" | jq -r "$2"; }
git_root=$(git rev-parse --show-toplevel)
printf '%s' "$tools" | while read -r repo asset_template; do
[ -n "$repo" ] || continue
release=$(get_release "$repo")
workflow_var=$(echo "$repo" |
awk -F / '{ gsub(/-/, "_"); print toupper($2) }')_VERSION
latest=$(q "$release" .tag_name | tr -d v)
current=$(grep -m 1 "$workflow_var" \
"$git_root/.forgejo/workflows/check.yaml" | awk '{print $2}')
echo "$repo"
echo "In use: $current"
echo "Latest: $latest"
if [ "$current" != "$latest" ]; then
echo " Published: $(q "$release" .published_at)"
echo " [ Prerelease: $(q "$release" .prerelease) ]"
echo " URL: $(q "$release" .html_url)"
echo " $(q "$release" .body)"
asset_pattern=$(printf '%s' "$asset_template" |
sed "s/%VERSION%/$latest/g")
asset=$(q "$release" ".assets[] | select(.name == \"$asset_pattern\")")
if [ -n "$asset" ]; then
echo " Asset: $(q "$asset" .name)"
echo " sha256sum: $(q "$asset" .digest)"
echo " URL: $(q "$asset" .browser_download_url)"
else
echo " No asset matching pattern $asset_pattern in this release"
fi
fi
echo
done