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`.
pull/586/head
Jorge Bucaran 4 years ago
parent c20d1b3ec3
commit d7035f3f4e
No known key found for this signature in database
GPG Key ID: E54BA3C0E646DB30

@ -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

Loading…
Cancel
Save