fix(install): alpha/beta self-update actually finds a real release now

Direct hotfix to master (like the earlier `ostp setup` wizard fix) - users
curl install.sh live from this branch's raw URL for every self-update, so
this can't wait for the normal alpha->beta->master promotion.

Master's install.sh still had the pre-rename "pre-release" branch check
(the alpha->beta rename landed on alpha/beta after this file's last direct
hotfix, never reaching master) AND the deeper bug: ostp update -b alpha/-b
beta tried to download a GitHub Release literally tagged "alpha"/"beta".
No such tag has ever existed - gha.ps1 cuts a fresh VERSIONED tag every
release (v0.4.2-beta.4, v0.4.3-alpha.2, ...) - so -b beta fell through to
the stable-release path entirely unnoticed (silently "succeeding" with the
wrong, older version) while -b alpha 404'd outright.

Now queries the full /releases list (newest first, unlike /releases/latest
which only ever returns the newest non-prerelease) and takes the first
tag_name containing "-alpha"/"-beta". Brings master to parity with alpha's
same fix.
This commit is contained in:
ospab 2026-07-21 18:41:26 +03:00
parent de5cee103b
commit 6bc646c8a5
1 changed files with 12 additions and 6 deletions

View File

@ -115,12 +115,18 @@ if [ -n "$TARGET_VERSION" ]; then
fi
echo "Fetching requested release $LATEST_RELEASE..."
else
if [ "$TARGET_BRANCH" == "alpha" ]; then
echo "Fetching alpha release..."
LATEST_RELEASE="alpha"
elif [ "$TARGET_BRANCH" == "pre-release" ]; then
echo "Fetching pre-release..."
LATEST_RELEASE="pre-release"
if [ "$TARGET_BRANCH" == "alpha" ] || [ "$TARGET_BRANCH" == "beta" ]; then
# There is no floating "alpha"/"beta" GitHub Release - gha.ps1 cuts a
# fresh versioned tag every time (v0.4.2-beta.4, v0.4.2-alpha.7, ...).
# /releases/latest only ever returns the newest NON-prerelease
# (stable) tag, so it can't find these. Query the full releases list
# (newest first) and take the first tag_name containing "-$TARGET_BRANCH".
echo "Fetching latest ${TARGET_BRANCH} release..."
LATEST_RELEASE=$(curl -s "https://api.github.com/repos/${GITHUB_REPO}/releases" \
| grep '"tag_name":' \
| grep -- "-${TARGET_BRANCH}" \
| head -1 \
| sed -E 's/.*"tag_name": *"([^"]+)".*/\1/')
else
echo "Fetching latest stable release..."
LATEST_RELEASE=$(curl -s "https://api.github.com/repos/${GITHUB_REPO}/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')