en/docs/development/ci/tool-versions.sh
jutty a24a877ad7 Fetch CI tooling directly from releases
Also adds a timeout and specific paths to trigger CI
2025-12-28 06:27:06 -03:00

45 lines
1.6 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
"
git_root=$(git rev-parse --show-toplevel)
get_release() {
repo="$1"
curl -sSL \
-H "Accept: application/json" \
"https://api.github.com/repos/$repo/releases/latest"
}
q() { printf '%s' "$1" | jq -r "$2"; }
printf '%s' "$tools" | while read -r repo asset_template; do
[ -n "$repo" ] || continue
release=$(get_release "$repo")
workflow_var=$(echo "$repo" | tr '[:lower:]' '[:upper:]' | tr '-' '_' | cut -d '/' -f 2)_VERSION
current=$(grep -m 1 "$workflow_var" "$git_root/.forgejo/workflows/check.yaml" | awk '{print $2}')
latest=$(q "$release" .tag_name | tr -d v)
echo "$repo"
echo "In use: $current"
echo "Latest: $latest"
if [ "$current" != "$latest" ]; then
echo " Published: $(q "$release" .published_at)"
echo " [ Draft: $(q "$release" .draft) ] [ 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