fix(tools): add codeload.github.com fallback for complex tag names

- Primary URL github.com/archive/refs/tags/ tried first
- Fallback to codeload.github.com for tags with special chars (@scope/pkg@ver)
- Only encode @ in fallback URL, keep / unencoded for codeload compatibility
This commit is contained in:
CanbiZ (MickLesk) 2026-01-21 15:59:06 +01:00
parent c2b890baa6
commit 665907592e

View File

@ -1778,8 +1778,9 @@ function fetch_and_deploy_gh_release() {
# Try primary URL first, fallback to codeload.github.com for complex tag names # Try primary URL first, fallback to codeload.github.com for complex tag names
if ! curl $download_timeout -fsSL -o "$tmpdir/$filename" "$direct_tarball_url" 2>/dev/null; then if ! curl $download_timeout -fsSL -o "$tmpdir/$filename" "$direct_tarball_url" 2>/dev/null; then
# Fallback: codeload.github.com handles special chars like @scope/package@version better # Fallback: codeload.github.com - only encode @ not / in tag names
local codeload_url="https://codeload.github.com/$repo/tar.gz/refs/tags/$encoded_tag_name" local codeload_encoded="${tag_name//@/%40}"
local codeload_url="https://codeload.github.com/$repo/tar.gz/refs/tags/$codeload_encoded"
curl $download_timeout -fsSL -o "$tmpdir/$filename" "$codeload_url" || { curl $download_timeout -fsSL -o "$tmpdir/$filename" "$codeload_url" || {
msg_error "Download failed: $direct_tarball_url (and fallback $codeload_url)" msg_error "Download failed: $direct_tarball_url (and fallback $codeload_url)"
rm -rf "$tmpdir" rm -rf "$tmpdir"