From d7035f3f4e02508c156566708270213ecc858a7f Mon Sep 17 00:00:00 2001 From: Jorge Bucaran Date: Sun, 2 Aug 2020 19:33:22 +0900 Subject: [PATCH] Add default (main) tag fallback support; fix #583 When adding packages without specifying the tag/branch, e.g. fisher add jorgebucaran/nvm.fish we'll try to download it from the `/main` tag by default and if that fails, fallback to `/master`. --- fisher.fish | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/fisher.fish b/fisher.fish index 8291eb7..215b9d0 100644 --- a/fisher.fish +++ b/fisher.fish @@ -292,29 +292,28 @@ function _fisher_fetch command awk -v PKG="$pkg" -v FS=/ ' BEGIN { - if (split(PKG, tmp, /@+|:/) > 2) { - if (tmp[4]) sub("@"tmp[4], "", PKG) - print PKG "\t" tmp[2]"/"tmp[1]"/"tmp[3] "\t" (tmp[4] ? tmp[4] : "master") - } else { - pkg = split(PKG, _, "/") <= 2 ? "github.com/"tmp[1] : tmp[1] - tag = tmp[2] ? tmp[2] : "master" - print (\ - pkg ~ /^github/ ? "https://codeload."pkg"/tar.gz/"tag : \ - pkg ~ /^gitlab/ ? "https://"pkg"/-/archive/"tag"/"tmp[split(pkg, tmp, "/")]"-"tag".tar.gz" : \ - pkg ~ /^bitbucket/ ? "https://"pkg"/get/"tag".tar.gz" : pkg \ - ) "\t" pkg - } + split(PKG, tmp, /@/) + pkg = split(PKG, _, "/") <= 2 ? "github.com/"tmp[1] : tmp[1] + print pkg "\t" url(pkg, (tmp[2] ? tmp[2] : "main")) "\t" (tmp[2] ? "" : url(pkg, "master")) } - ' | read -l url pkg branch + function url(pkg, tag) { + return \ + pkg ~ /^github/ ? "https://codeload."pkg"/tar.gz/"tag : \ + pkg ~ /^gitlab/ ? "https://"pkg"/-/archive/"tag"/"tmp[split(pkg, tmp, "/")]"-"tag".tar.gz" : \ + pkg ~ /^bitbucket/ ? "https://"pkg"/get/"tag".tar.gz" : pkg + } + ' | read -l pkg url url_fallback if test ! -d "$fisher_data/$pkg" fish -c " echo fetching $url >&2 command mkdir -p $fisher_data/$pkg $fisher_cache/(command dirname $pkg) - if test ! -z \"$branch\" - command git clone $url $fisher_data/$pkg --branch $branch --depth 1 2>/dev/null - or echo fisher: cannot clone \"$url\" -- is this a valid url\? >&2 - else if command curl $curl_opts -Ss -w \"\" $url 2>&1 | command tar -xzf- -C $fisher_data/$pkg 2>/dev/null + if command curl $curl_opts -Ss -w \"\" $url 2>&1 | command tar -xzf- -C $fisher_data/$pkg 2>/dev/null + or begin + test ! -z \"$url_fallback\" + and echo fallback $url_fallback >&2 + and command curl $curl_opts -Ss -w \"\" $url_fallback 2>&1 | command tar -xzf- -C $fisher_data/$pkg 2>/dev/null + end command rm -Rf $fisher_cache/$pkg command mv -f $fisher_data/$pkg/* $fisher_cache/$pkg command rm -Rf $fisher_data/$pkg