@@ -119,40 +119,52 @@ jobs:
119119 GH_TOKEN : ${{ github.token }}
120120 SOCKET_API_KEY : ${{ secrets.SOCKET_API_KEY }} # zizmor: ignore[secrets-outside-env]
121121 run : | # zizmor: ignore[github-env]
122+ # Pinned version + per-platform checksum pairs. Bumping a tool
123+ # requires updating the matching version AND every platform's
124+ # SHA256 in the same commit, otherwise the download / verify
125+ # steps will diverge.
126+ SFW_FREE_VERSION="1.7.2"
127+ SFW_ENTERPRISE_VERSION="1.7.2"
122128 SFW_DIR="${RUNNER_TEMP:-/tmp}/sfw-bin"
123129 KERNEL="$(uname -s | cut -d- -f1)"
124130 ARCH="$(uname -m)"
125131 USE_ENTERPRISE=false
126132 [ -n "$SOCKET_API_KEY" ] && USE_ENTERPRISE=true
127133 if [ "$USE_ENTERPRISE" = "true" ]; then
128134 REPO="SocketDev/firewall-release"
135+ SFW_VERSION="$SFW_ENTERPRISE_VERSION"
129136 case "${KERNEL}-${ARCH}" in
130- Linux-x86_64) ASSET="sfw-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="9115b4ca8021eb173eb9e9c3627deb7f1066f8debd48c5c9d9f3caabb2a26a4b " ;;
131- Linux-aarch64) ASSET="sfw-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="671270231617142404a1564e52672f79b806f9df3f232fcc7606329c0246da55 " ;;
132- Darwin-x86_64) ASSET="sfw-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="01d64d40effda35c31f8d8ee1fed1388aac0a11aba40d47fba8a36024b77500c " ;;
133- Darwin-arm64) ASSET="sfw-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="acad0b517601bb7408e2e611c9226f47dcccbd83333d7fc5157f1d32ed2b953d " ;;
134- MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="9a50e1ddaf038138c3f85418dc5df0113bbe6fc884f5abe158beaa9aea18d70a " ;;
137+ Linux-x86_64) ASSET="sfw-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="4482b52e6367bd4610519bfd57a104d5907ec87d5399142ed3bb3d222de1f33d " ;;
138+ Linux-aarch64) ASSET="sfw-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="c24a79c27e1a01a59b7a160c165930ae029816c72b141fcfcdb2f73e0774898a " ;;
139+ Darwin-x86_64) ASSET="sfw-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="da252d2a9a5d0edb271bb771e0d01b9cd6fa1635b6d765f61efd61edb6739f12 " ;;
140+ Darwin-arm64) ASSET="sfw-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="b1cdc3bdbd2a3161247bd5cc215eb3c44a90b87fe0b800a33889a14f61bb0d6d " ;;
141+ MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="e52ad806a1c41b440f04098eb1c7e407845f03f5740a6a79006ba6fd172056ec " ;;
135142 *) echo "Unsupported platform: ${KERNEL}-${ARCH}" >&2; exit 1 ;;
136143 esac
137144 else
138145 REPO="SocketDev/sfw-free"
146+ SFW_VERSION="$SFW_FREE_VERSION"
139147 case "${KERNEL}-${ARCH}" in
140- Linux-x86_64) ASSET="sfw-free-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="4a1e8b65e90fce7d5fd066cf0af6c93d512065fa4222a475c8d959a6bc14b9ff " ;;
141- Linux-aarch64) ASSET="sfw-free-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="df2eedb2daf2572eee047adb8bfd81c9069edcb200fc7d3710fca98ec3ca81a1 " ;;
142- Darwin-x86_64) ASSET="sfw-free-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="724ccea19d847b79db8cc8e38f5f18ce2dd32336007f42b11bed7d2e5f4a2566 " ;;
143- Darwin-arm64) ASSET="sfw-free-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="bf1616fc44ac49f1cb2067fedfa127a3ae65d6ec6d634efbb3098cfa355e5555 " ;;
144- MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-free-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="c953e62ad7928d4d8f2302f5737884ea1a757babc26bed6a42b9b6b68a5d54af " ;;
148+ Linux-x86_64) ASSET="sfw-free-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="93e2d9dfa244b82a74e014dc26b1c6af18b4adec20f35254378943db5fe91411 " ;;
149+ Linux-aarch64) ASSET="sfw-free-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="84a045e4e1bb320cc5c0d3929f02e53f199398b5be0637e8846d02d9ef0027b1 " ;;
150+ Darwin-x86_64) ASSET="sfw-free-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="a5427d479d440f08e3789fa191ba57599be64997196daf42e67d964fec0382b4 " ;;
151+ Darwin-arm64) ASSET="sfw-free-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="248fb588e1e1a27e7192f7b079f739fc29a9de61f0bad7e90928363022dc5643 " ;;
152+ MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-free-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="6d333b4cac9d7c5712e2e99677ca634ac8a3020d550c6308312c60bea97f0a28 " ;;
145153 *) echo "Unsupported platform: ${KERNEL}-${ARCH}" >&2; exit 1 ;;
146154 esac
147155 fi
148156 if [ ! -x "$SFW_BIN" ]; then
149157 mkdir -p "$SFW_DIR"
150- DOWNLOAD_URL="$(gh api "repos/${REPO}/releases/latest " \
158+ DOWNLOAD_URL="$(gh api "repos/${REPO}/releases/tags/v${SFW_VERSION} " \
151159 --jq ".assets[] | select(.name == \"$ASSET\") | .browser_download_url")"
160+ if [ -z "$DOWNLOAD_URL" ]; then
161+ echo "Asset ${ASSET} not found in ${REPO}@v${SFW_VERSION}" >&2
162+ exit 1
163+ fi
152164 curl -fsSL -o "$SFW_BIN" "$DOWNLOAD_URL"
153165 ACTUAL_SHA256="$( (sha256sum "$SFW_BIN" 2>/dev/null || shasum -a 256 "$SFW_BIN") | cut -d' ' -f1 | tr -d '\\')"
154166 if [ "$ACTUAL_SHA256" != "$EXPECTED_SHA256" ]; then
155- echo "Checksum mismatch for ${ASSET}!" >&2
167+ echo "Checksum mismatch for ${ASSET} (${REPO}@v${SFW_VERSION}) !" >&2
156168 echo " Expected: ${EXPECTED_SHA256}" >&2
157169 echo " Actual: ${ACTUAL_SHA256}" >&2
158170 rm -f "$SFW_BIN"
@@ -283,40 +295,52 @@ jobs:
283295 GH_TOKEN : ${{ github.token }}
284296 SOCKET_API_KEY : ${{ secrets.SOCKET_API_KEY }} # zizmor: ignore[secrets-outside-env]
285297 run : | # zizmor: ignore[github-env]
298+ # Pinned version + per-platform checksum pairs. Bumping a tool
299+ # requires updating the matching version AND every platform's
300+ # SHA256 in the same commit, otherwise the download / verify
301+ # steps will diverge.
302+ SFW_FREE_VERSION="1.7.2"
303+ SFW_ENTERPRISE_VERSION="1.7.2"
286304 SFW_DIR="${RUNNER_TEMP:-/tmp}/sfw-bin"
287305 KERNEL="$(uname -s | cut -d- -f1)"
288306 ARCH="$(uname -m)"
289307 USE_ENTERPRISE=false
290308 [ -n "$SOCKET_API_KEY" ] && USE_ENTERPRISE=true
291309 if [ "$USE_ENTERPRISE" = "true" ]; then
292310 REPO="SocketDev/firewall-release"
311+ SFW_VERSION="$SFW_ENTERPRISE_VERSION"
293312 case "${KERNEL}-${ARCH}" in
294- Linux-x86_64) ASSET="sfw-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="9115b4ca8021eb173eb9e9c3627deb7f1066f8debd48c5c9d9f3caabb2a26a4b " ;;
295- Linux-aarch64) ASSET="sfw-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="671270231617142404a1564e52672f79b806f9df3f232fcc7606329c0246da55 " ;;
296- Darwin-x86_64) ASSET="sfw-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="01d64d40effda35c31f8d8ee1fed1388aac0a11aba40d47fba8a36024b77500c " ;;
297- Darwin-arm64) ASSET="sfw-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="acad0b517601bb7408e2e611c9226f47dcccbd83333d7fc5157f1d32ed2b953d " ;;
298- MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="9a50e1ddaf038138c3f85418dc5df0113bbe6fc884f5abe158beaa9aea18d70a " ;;
313+ Linux-x86_64) ASSET="sfw-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="4482b52e6367bd4610519bfd57a104d5907ec87d5399142ed3bb3d222de1f33d " ;;
314+ Linux-aarch64) ASSET="sfw-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="c24a79c27e1a01a59b7a160c165930ae029816c72b141fcfcdb2f73e0774898a " ;;
315+ Darwin-x86_64) ASSET="sfw-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="da252d2a9a5d0edb271bb771e0d01b9cd6fa1635b6d765f61efd61edb6739f12 " ;;
316+ Darwin-arm64) ASSET="sfw-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="b1cdc3bdbd2a3161247bd5cc215eb3c44a90b87fe0b800a33889a14f61bb0d6d " ;;
317+ MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="e52ad806a1c41b440f04098eb1c7e407845f03f5740a6a79006ba6fd172056ec " ;;
299318 *) echo "Unsupported platform: ${KERNEL}-${ARCH}" >&2; exit 1 ;;
300319 esac
301320 else
302321 REPO="SocketDev/sfw-free"
322+ SFW_VERSION="$SFW_FREE_VERSION"
303323 case "${KERNEL}-${ARCH}" in
304- Linux-x86_64) ASSET="sfw-free-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="4a1e8b65e90fce7d5fd066cf0af6c93d512065fa4222a475c8d959a6bc14b9ff " ;;
305- Linux-aarch64) ASSET="sfw-free-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="df2eedb2daf2572eee047adb8bfd81c9069edcb200fc7d3710fca98ec3ca81a1 " ;;
306- Darwin-x86_64) ASSET="sfw-free-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="724ccea19d847b79db8cc8e38f5f18ce2dd32336007f42b11bed7d2e5f4a2566 " ;;
307- Darwin-arm64) ASSET="sfw-free-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="bf1616fc44ac49f1cb2067fedfa127a3ae65d6ec6d634efbb3098cfa355e5555 " ;;
308- MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-free-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="c953e62ad7928d4d8f2302f5737884ea1a757babc26bed6a42b9b6b68a5d54af " ;;
324+ Linux-x86_64) ASSET="sfw-free-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="93e2d9dfa244b82a74e014dc26b1c6af18b4adec20f35254378943db5fe91411 " ;;
325+ Linux-aarch64) ASSET="sfw-free-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="84a045e4e1bb320cc5c0d3929f02e53f199398b5be0637e8846d02d9ef0027b1 " ;;
326+ Darwin-x86_64) ASSET="sfw-free-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="a5427d479d440f08e3789fa191ba57599be64997196daf42e67d964fec0382b4 " ;;
327+ Darwin-arm64) ASSET="sfw-free-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="248fb588e1e1a27e7192f7b079f739fc29a9de61f0bad7e90928363022dc5643 " ;;
328+ MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-free-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="6d333b4cac9d7c5712e2e99677ca634ac8a3020d550c6308312c60bea97f0a28 " ;;
309329 *) echo "Unsupported platform: ${KERNEL}-${ARCH}" >&2; exit 1 ;;
310330 esac
311331 fi
312332 if [ ! -x "$SFW_BIN" ]; then
313333 mkdir -p "$SFW_DIR"
314- DOWNLOAD_URL="$(gh api "repos/${REPO}/releases/latest " \
334+ DOWNLOAD_URL="$(gh api "repos/${REPO}/releases/tags/v${SFW_VERSION} " \
315335 --jq ".assets[] | select(.name == \"$ASSET\") | .browser_download_url")"
336+ if [ -z "$DOWNLOAD_URL" ]; then
337+ echo "Asset ${ASSET} not found in ${REPO}@v${SFW_VERSION}" >&2
338+ exit 1
339+ fi
316340 curl -fsSL -o "$SFW_BIN" "$DOWNLOAD_URL"
317341 ACTUAL_SHA256="$( (sha256sum "$SFW_BIN" 2>/dev/null || shasum -a 256 "$SFW_BIN") | cut -d' ' -f1 | tr -d '\\')"
318342 if [ "$ACTUAL_SHA256" != "$EXPECTED_SHA256" ]; then
319- echo "Checksum mismatch for ${ASSET}!" >&2
343+ echo "Checksum mismatch for ${ASSET} (${REPO}@v${SFW_VERSION}) !" >&2
320344 echo " Expected: ${EXPECTED_SHA256}" >&2
321345 echo " Actual: ${ACTUAL_SHA256}" >&2
322346 rm -f "$SFW_BIN"
@@ -452,40 +476,52 @@ jobs:
452476 GH_TOKEN : ${{ github.token }}
453477 SOCKET_API_KEY : ${{ secrets.SOCKET_API_KEY }} # zizmor: ignore[secrets-outside-env]
454478 run : | # zizmor: ignore[github-env]
479+ # Pinned version + per-platform checksum pairs. Bumping a tool
480+ # requires updating the matching version AND every platform's
481+ # SHA256 in the same commit, otherwise the download / verify
482+ # steps will diverge.
483+ SFW_FREE_VERSION="1.7.2"
484+ SFW_ENTERPRISE_VERSION="1.7.2"
455485 SFW_DIR="${RUNNER_TEMP:-/tmp}/sfw-bin"
456486 KERNEL="$(uname -s | cut -d- -f1)"
457487 ARCH="$(uname -m)"
458488 USE_ENTERPRISE=false
459489 [ -n "$SOCKET_API_KEY" ] && USE_ENTERPRISE=true
460490 if [ "$USE_ENTERPRISE" = "true" ]; then
461491 REPO="SocketDev/firewall-release"
492+ SFW_VERSION="$SFW_ENTERPRISE_VERSION"
462493 case "${KERNEL}-${ARCH}" in
463- Linux-x86_64) ASSET="sfw-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="9115b4ca8021eb173eb9e9c3627deb7f1066f8debd48c5c9d9f3caabb2a26a4b " ;;
464- Linux-aarch64) ASSET="sfw-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="671270231617142404a1564e52672f79b806f9df3f232fcc7606329c0246da55 " ;;
465- Darwin-x86_64) ASSET="sfw-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="01d64d40effda35c31f8d8ee1fed1388aac0a11aba40d47fba8a36024b77500c " ;;
466- Darwin-arm64) ASSET="sfw-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="acad0b517601bb7408e2e611c9226f47dcccbd83333d7fc5157f1d32ed2b953d " ;;
467- MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="9a50e1ddaf038138c3f85418dc5df0113bbe6fc884f5abe158beaa9aea18d70a " ;;
494+ Linux-x86_64) ASSET="sfw-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="4482b52e6367bd4610519bfd57a104d5907ec87d5399142ed3bb3d222de1f33d " ;;
495+ Linux-aarch64) ASSET="sfw-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="c24a79c27e1a01a59b7a160c165930ae029816c72b141fcfcdb2f73e0774898a " ;;
496+ Darwin-x86_64) ASSET="sfw-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="da252d2a9a5d0edb271bb771e0d01b9cd6fa1635b6d765f61efd61edb6739f12 " ;;
497+ Darwin-arm64) ASSET="sfw-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="b1cdc3bdbd2a3161247bd5cc215eb3c44a90b87fe0b800a33889a14f61bb0d6d " ;;
498+ MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="e52ad806a1c41b440f04098eb1c7e407845f03f5740a6a79006ba6fd172056ec " ;;
468499 *) echo "Unsupported platform: ${KERNEL}-${ARCH}" >&2; exit 1 ;;
469500 esac
470501 else
471502 REPO="SocketDev/sfw-free"
503+ SFW_VERSION="$SFW_FREE_VERSION"
472504 case "${KERNEL}-${ARCH}" in
473- Linux-x86_64) ASSET="sfw-free-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="4a1e8b65e90fce7d5fd066cf0af6c93d512065fa4222a475c8d959a6bc14b9ff " ;;
474- Linux-aarch64) ASSET="sfw-free-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="df2eedb2daf2572eee047adb8bfd81c9069edcb200fc7d3710fca98ec3ca81a1 " ;;
475- Darwin-x86_64) ASSET="sfw-free-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="724ccea19d847b79db8cc8e38f5f18ce2dd32336007f42b11bed7d2e5f4a2566 " ;;
476- Darwin-arm64) ASSET="sfw-free-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="bf1616fc44ac49f1cb2067fedfa127a3ae65d6ec6d634efbb3098cfa355e5555 " ;;
477- MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-free-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="c953e62ad7928d4d8f2302f5737884ea1a757babc26bed6a42b9b6b68a5d54af " ;;
505+ Linux-x86_64) ASSET="sfw-free-linux-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="93e2d9dfa244b82a74e014dc26b1c6af18b4adec20f35254378943db5fe91411 " ;;
506+ Linux-aarch64) ASSET="sfw-free-linux-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="84a045e4e1bb320cc5c0d3929f02e53f199398b5be0637e8846d02d9ef0027b1 " ;;
507+ Darwin-x86_64) ASSET="sfw-free-macos-x86_64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="a5427d479d440f08e3789fa191ba57599be64997196daf42e67d964fec0382b4 " ;;
508+ Darwin-arm64) ASSET="sfw-free-macos-arm64" ; SFW_BIN="$SFW_DIR/sfw" ; EXPECTED_SHA256="248fb588e1e1a27e7192f7b079f739fc29a9de61f0bad7e90928363022dc5643 " ;;
509+ MINGW64_NT-x86_64|MSYS_NT-x86_64) ASSET="sfw-free-windows-x86_64.exe" ; SFW_BIN="$SFW_DIR/sfw.exe" ; EXPECTED_SHA256="6d333b4cac9d7c5712e2e99677ca634ac8a3020d550c6308312c60bea97f0a28 " ;;
478510 *) echo "Unsupported platform: ${KERNEL}-${ARCH}" >&2; exit 1 ;;
479511 esac
480512 fi
481513 if [ ! -x "$SFW_BIN" ]; then
482514 mkdir -p "$SFW_DIR"
483- DOWNLOAD_URL="$(gh api "repos/${REPO}/releases/latest " \
515+ DOWNLOAD_URL="$(gh api "repos/${REPO}/releases/tags/v${SFW_VERSION} " \
484516 --jq ".assets[] | select(.name == \"$ASSET\") | .browser_download_url")"
517+ if [ -z "$DOWNLOAD_URL" ]; then
518+ echo "Asset ${ASSET} not found in ${REPO}@v${SFW_VERSION}" >&2
519+ exit 1
520+ fi
485521 curl -fsSL -o "$SFW_BIN" "$DOWNLOAD_URL"
486522 ACTUAL_SHA256="$( (sha256sum "$SFW_BIN" 2>/dev/null || shasum -a 256 "$SFW_BIN") | cut -d' ' -f1 | tr -d '\\')"
487523 if [ "$ACTUAL_SHA256" != "$EXPECTED_SHA256" ]; then
488- echo "Checksum mismatch for ${ASSET}!" >&2
524+ echo "Checksum mismatch for ${ASSET} (${REPO}@v${SFW_VERSION}) !" >&2
489525 echo " Expected: ${EXPECTED_SHA256}" >&2
490526 echo " Actual: ${ACTUAL_SHA256}" >&2
491527 rm -f "$SFW_BIN"
0 commit comments