Skip to content

Commit

Permalink
Merge pull request #3692 from mateon1/fix/dist-get
Browse files Browse the repository at this point in the history
Make bin/dist_get fall back to other downloaders if one fails
  • Loading branch information
whyrusleeping authored Mar 2, 2017
2 parents 7b27f1f + 4ae80d6 commit ea8e0f5
Showing 1 changed file with 26 additions and 13 deletions.
39 changes: 26 additions & 13 deletions bin/dist_get
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,26 @@ check_writeable() {
printf "" > "$1" && rm "$1"
}

try_download() {
url="$1"
output="$2"
command="$3"
util_name="$(set -- $command; echo "$1")"

if ! have_binary "$util_name"; then
return 1
fi

printf '==> Using %s to download "%s" to "%s"\n' "$util_name" "$url" "$output"
if eval "$command"; then
echo "==> Download complete!"
return
else
echo "error: couldn't download with $util_name ($?)"
return 1
fi
}

download() {
dl_url="$1"
dl_output="$2"
Expand All @@ -23,19 +43,12 @@ download() {
die "download error: cannot write to $dl_output"
fi

if have_binary wget; then
printf '==> Using wget to download "%s" to "%s"\n' "$dl_url" "$dl_output"
wget "$dl_url" -O "$dl_output" || return
elif have_binary curl; then
printf '==> Using curl to download "%s" to "%s"\n' "$dl_url" "$dl_output"
curl --silent "$dl_url" > "$dl_output" || return
elif have_binary fetch; then
printf '==> Using fetch to download "%s" to "%s"\n' "$dl_url" "$dl_output"
fetch "$dl_url" -o "$dl_output" || return
else
die "no binary found to download $dl_url. exiting."
fi
echo "==> download complete!"
try_download "$dl_url" "$dl_output" "wget '$dl_url' -O '$dl_output'" && return
try_download "$dl_url" "$dl_output" "curl --silent '$dl_url' > '$dl_output'" && return
try_download "$dl_url" "$dl_output" "fetch '$dl_url' -o '$dl_output'" && return
try_download "$dl_url" "$dl_output" "http '$dl_url' > '$dl_output'" && return

die "Unable to download $dl_url. exiting."
}

unarchive() {
Expand Down

0 comments on commit ea8e0f5

Please sign in to comment.