From 7f4af3b19650a44c83ac69e96ecfc40542fd3f14 Mon Sep 17 00:00:00 2001 From: darkclip Date: Thu, 24 Apr 2025 12:07:42 +0800 Subject: [PATCH] update --- install-release.sh | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/install-release.sh b/install-release.sh index 8a86d5d..7b295b0 100755 --- a/install-release.sh +++ b/install-release.sh @@ -2,7 +2,7 @@ set -e DEFAULT_RELEASE="latest" -DEFAULT_MATCH_STAGE_1="browser_download_url" +DEFAULT_MATCH="browser_download_url" main(){ @@ -12,20 +12,36 @@ main(){ exit 1 fi if [ -z "$DD_URL" ]; then + RELEASE=$DEFAULT_RELEASE + if [ ! -z "$TAG" ]; then + RELEASE="tags/$TAG" + fi echo "Query for $REPO" echo - api_url="https://api.github.com/repos/$REPO/releases/$TAG" + api_url="https://api.github.com/repos/$REPO/releases/$RELEASE" + if $LIST_TAGS; then + api_url="https://api.github.com/repos/$REPO/tags" + fi if $VERBOSE; then echo "API: $api_url" echo fi - candidates=$(curl $SET_AUTH $SET_PROXY -sSfL "$api_url" | grep -P "$MATCH_STAGE_1") + candidates=$(curl $SET_AUTH $SET_PROXY -sSfL "$api_url") + if $LIST_TAGS && [ ! -z "$TAG" ]; then + candidates=$(echo "$candidates" | grep -P "$TAG") + fi + if [ ! -z "$MATCH_STAGE_1" ]; then + candidates=$(echo "$candidates" | grep -P "$MATCH_STAGE_1") + fi + if [ ! -z "$MATCH_STAGE_2" ]; then + candidates=$(echo "$candidates" | grep -P "$MATCH_STAGE_2") + fi if $VERBOSE; then echo "Candidates:" echo "$candidates" echo fi - dl_url=$(echo "$candidates" | grep -P "$MATCH_STAGE_2" | cut -d '"' -f 4) + dl_url=$(echo "$candidates" | cut -d '"' -f 4) if $VERBOSE; then echo "From:" echo "$dl_url" @@ -198,9 +214,10 @@ usage(){ echo "Options:"; echo " -r Github repo"; echo " -t Release tag (default: $DEFAULT_RELEASE)"; - echo " -k Match stage 1 with regexp (default: $DEFAULT_MATCH_STAGE_1)"; + echo " -k Match stage 1 with regexp (default: $DEFAULT_MATCH)"; echo " -m Match stage 2 with regexp"; - echo " -u Direct download url (bypass query repo)"; + echo " -l List all tags"; + echo " -u Direct download url (bypass Github repo)"; echo " -b Do not inflate"; echo " -p Program path"; echo " -n Program name"; @@ -219,9 +236,10 @@ usage(){ } REPO= -TAG=$DEFAULT_RELEASE -MATCH_STAGE_1=$DEFAULT_MATCH_STAGE_1 +TAG= +MATCH_STAGE_1=$DEFAULT_MATCH MATCH_STAGE_2= +LIST_TAGS=false DD_URL= NO_INFLATE=false PROG_PATH= @@ -234,13 +252,13 @@ CMD_RELOAD= VERBOSE=false SET_AUTH= SET_PROXY= -while getopts ":r:t:k:m:u:bp:n:fo:d:e:c:va:x:" OPT; do +while getopts ":r:t:k:m:lu:bp:n:fo:d:e:c:va:x:" OPT; do case $OPT in r) REPO=$OPTARG; ;; t) - TAG="tags/$OPTARG"; + TAG=$OPTARG; ;; k) MATCH_STAGE_1=$OPTARG; @@ -248,6 +266,9 @@ while getopts ":r:t:k:m:u:bp:n:fo:d:e:c:va:x:" OPT; do m) MATCH_STAGE_2=$OPTARG; ;; + l) + LIST_TAGS=true; + ;; u) DD_URL=$OPTARG; ;;