Refactor download, add httpie support
License: MIT Signed-off-by: Mateusz Naściszewski <matin1111@wp.pl>
mateon1 committed
Feb 15, 2017 at 22:52 UTC
6b078158993466384187e7ea0b8a0090d378199d
1 file changed
+25
-21
bin/dist_get
+25
-21
@@ -13,6 +13,26 @@ check_writeable() {
13
printf "" > "$1" && rm "$1"
14
}
15
16
+try_download() {
17
+ url="$1"
18
+ output="$2"
19
+ command="$3"
20
+ util_name=$(set -- $3; echo $1)
21
+
22
+ if ! have_binary $util_name; then
23
+ return 1
24
+ fi
25
+
26
+ printf '==> Using %s to download "%s" to "%s"\n' "$util_name" "$url" "$output"
27
+ if eval "$command"; then
28
+ echo "==> Download complete!"
29
+ return
30
+ else
31
+ echo "error: couldn't download with $util_name ($?)"
32
+ return 1
33
+ fi
34
+}
35
+
36
download() {
37
dl_url="$1"
38
dl_output="$2"
@@ -23,27 +43,11 @@ download() {
43
die "download error: cannot write to $dl_output"
44
fi
45
26
- if have_binary wget; then
27
- printf '==> Using wget to download "%s" to "%s"\n' "$dl_url" "$dl_output"
28
- if wget "$dl_url" -O "$dl_output"; then
29
- echo "==> download complete!"
30
- return
31
- fi
32
- fi
33
- if have_binary curl; then
34
- printf '==> Using curl to download "%s" to "%s"\n' "$dl_url" "$dl_output"
35
- if curl --silent "$dl_url" > "$dl_output"; then
36
- echo "==> download complete!"
37
- return
38
- fi
39
- fi
40
- if have_binary fetch; then
41
- printf '==> Using fetch to download "%s" to "%s"\n' "$dl_url" "$dl_output"
42
- if fetch "$dl_url" -o "$dl_output"; then
43
- echo "==> download complete!"
44
- return
45
- fi
46
- fi
46
+ try_download "$dl_url" "$dl_output" "wget '$dl_url' -O '$dl_output'" && return
47
+ try_download "$dl_url" "$dl_output" "curl --silent '$dl_url' > '$dl_output'" && return
48
+ try_download "$dl_url" "$dl_output" "fetch '$dl_url' -o '$dl_output'" && return
49
+ try_download "$dl_url" "$dl_output" "http '$dl_url' > '$dl_output'" && return
50
+
51
die "Unable to download $dl_url. exiting."
52
}
53