From f1e503dc3b6ac689331180e577b4e7da79e17b02 Mon Sep 17 00:00:00 2001 From: Xie Zejian Date: Fri, 5 Sep 2025 20:27:03 +0800 Subject: [PATCH] fix: impl gh-r version detection using GitHub API (#731) --- zinit-install.zsh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/zinit-install.zsh b/zinit-install.zsh index 94e51ca6..ae85357c 100644 --- a/zinit-install.zsh +++ b/zinit-install.zsh @@ -1442,8 +1442,14 @@ builtin source "${ZINIT[BIN_DIR]}/zinit-side.zsh" || { if [[ -z $urlpart ]]; then local tag_version=${ICE[ver]} if [[ -z $tag_version ]]; then - local releases_url=https://github.com/$user/$plugin/releases/latest - tag_version="$( { .zinit-download-file-stdout $releases_url || .zinit-download-file-stdout $releases_url 1; } 2>/dev/null | command grep -m1 -o 'href=./'$user'/'$plugin'/releases/tag/[^"]\+' )" + # Try GitHub API first, fallback to HTML parsing + local api_url=https://api.github.com/repos/$user/$plugin/releases/latest + tag_version="$( { .zinit-download-file-stdout $api_url || .zinit-download-file-stdout $api_url 1; } 2>/dev/null | command grep -o '"tag_name"[[:space:]]*:[[:space:]]*"[^"]\+"' | command grep -o '"[^"]*"$' | tr -d '"' )" + # Fallback to original method if API fails + if [[ -z $tag_version ]]; then + local releases_url=https://github.com/$user/$plugin/releases/latest + tag_version="$( { .zinit-download-file-stdout $releases_url || .zinit-download-file-stdout $releases_url 1; } 2>/dev/null | command grep -m1 -o 'href=./'$user'/'$plugin'/releases/tag/[^"]\+' )" + fi tag_version=${tag_version##*/} fi local url=https://github.com/$user/$plugin/releases/expanded_assets/$tag_version