blob: e12c8a020537cefe69a1f462d6f7a382a1d86aed (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# helper functions for downloading files or packages
# download a file. usage:
# download FROM [TO]
# 1. download "http://example.com/something.tar.gz"
# 2. download "http://example.com/something.tar.gz" "somename.tar.gz"
download () {
[ $# -lt 1 -o $# -gt 2 ] && perror "download called with $# arguments, need 1 or 2"
[ -z "$1" ] && perror "download: URL empty."
if [ $# -eq 2 ]; then
[ -z "$2" ] && perror "download: target file name given but empty"
pinfo "Downloading $2 from '$1'...."
wget -O "$2" "$1"
local RET=$?
else
pinfo "Downloading '$1'...."
wget "$1"
local RET=$?
fi
[ "x$RET" != "x0" ] && perror "downloading $1 failed, wget returned exit code $RET"
}
# download a file and untar it. usage:
# download_untar FROM TO_DIR [TEMPFILE]
# 1. download_untar "http://example.com/something.tar.gz" "src/"
# 2. download_untar "http://example.com/something.tar.gz" "src/" "temporary_name.tar.gz"
download_untar () {
[ $# -lt 2 -o $# -gt 3 ] && perror "download_untar called with $# arguments, need 2 or 3"
local URL="$1"
local DEST="$2"
if [ $# -eq 2 ]; then
local TMPFILE=dltmp.$(basename "$URL")
else
local TMPFILE="$3"
fi
pdebug "$URL ---> $TMPFILE"
download "$URL" "$TMPFILE"
mkdir -p "$DEST"
pinfo "Unpacking to '$DEST'..."
tar xf "$TMPFILE" -C "${DEST}/"
local RET=$?
[ "x$RET" != "x0" ] && perror "could not untar $TMPFILE to $DEST (tar returned $RET)"
unlink "$TMPFILE"
}
# Download first param URL to second param path,
# iff the local file does not exist or is empty.
# Return 1 if remote file does not exist, 0 otherwise
download_if_empty() {
[ $# -ne 2 ] && perror "download_if_empty: want 2 args, got $# ($@)"
local SRC="$1"
local DST="$2"
[ -s "$DST" ] && pdebug "Not downloading $DST: already there." && return 0
pdebug "Downloading $DST"
[ -e "$DST" ] && unlink "$DST"
local DSTDIR="$(dirname "$DST")"
pdebug "wgetting $SRC"
local TMP=$(mktemp)
wget -O "$TMP" "$SRC"
local RET=$?
if [ "x$RET" = "x0" -a -s "$TMP" ]; then
mkdir -p "$DSTDIR"
mv "$TMP" "$DST" || perror "Could not mv '$TMP' '$DST'"
return 0
fi
pdebug "WGET failed"
rmdir "$DSTDIR"
unlink "$TMP"
return 1
}
|