3 # Small utility to fetch and unpack archives on the web (with cache)
5 # Depends on : curl, tar
11 # ENV vars, inherited from external
16 EXTRACT_DIR=${EXTRACT_DIR:-`pwd`}
17 if [ -n "$HOME" ]; then
18 CACHE_DIR=${CACHE_DIR:-$HOME/.cache/fetchurl}
20 CACHE_DIR=${CACHE_DIR:-}
22 TMP_DIR=${TMP_DIR:-/tmp}
34 if [ "$VERBOSE" -ne 0 ]; then
49 echo "Usage: fetchurl url"
51 echo "UNPACK=${UNPACK}"
52 echo "VERBOSE=${VERBOSE}"
54 echo "EXTRACT_DIR=${EXTRACT_DIR}"
55 echo "CACHE_DIR=${CACHE_DIR}"
56 echo "TMP_DIR=${TMP_DIR}"
62 if [ -z "$URL" ]; then
63 stderr "ERROR: missing url"
67 if [ -z "$CACHE_DIR" ] && [ "$CACHE" -ne 0 ]; then
68 stderr "ERROR: missing cache dir"
72 filename=`basename "$URL" | sed 's/\?.*//'`
73 tmp_file="$TMP_DIR/$filename"
74 cache_file="$CACHE_DIR/$filename"
79 if [ "$CACHE" -eq 0 ] || [ ! -f "$cache_file" ]; then
81 sh curl -L -o "$tmp_file" "$URL"
82 sh mv "$tmp_file" "$cache_file"
88 if [ "$UNPACK" -ne 0 ]; then
90 if [ "$filename" != "${filename%.tar.gz}" ]; then
92 elif [ "$filename" != "${filename%.tgz}" ]; then
94 elif [ "$filename" != "${filename%.tar.bz2}" ]; then
96 elif [ "$filename" != "${filename%.tar.xz}" ]; then
99 stderr extension of $filename is not supported
103 target_dir=`expand_path "$EXTRACT_DIR"`
104 mkdir -p "$target_dir"
109 sh tar xzvf "$cache_file"
112 sh tar xjvf "$cache_file"
115 sh tar xJvf "$cache_file"
118 stderr BUG, this should not happen