blob: 1ddd111b151827cdea8de1e491fbc7ce48033f6e (
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
source $stdenv/setup
# Curl flags to handle redirects, not use EPSV, handle cookies for
# servers to need them during redirects, and work on SSL without a
# certificate (this isn't a security problem because we check the
# cryptographic hash of the output anyway).
set -o noglob
curl="curl \
--location \
--max-redirs 20 \
--retry 2 \
--disable-epsv \
--cookie-jar cookies \
--insecure \
--speed-time 5 \
-# \
--fail \
$curlOpts \
$NIX_CURL_FLAGS"
finish() {
runHook postFetch
set +o noglob
exit 0
}
ipfs_add() {
if curl --retry 0 --head --silent "localhost:5001" > /dev/null; then
echo "[0m[01;36m=IPFS=[0m add $ipfs"
tar --owner=root --group=root -cWf "source.tar" $(echo *)
res=$(curl -# -F "file=@source.tar" "localhost:5001/api/v0/tar/add" | sed 's/.*"Hash":"\(.*\)".*/\1/')
if [ $ipfs != $res ]; then
echo "\`ipfs tar add' results in $res when $ipfs is expected"
exit 1
fi
rm "source.tar"
fi
}
echo
mkdir download
cd download
if curl --retry 0 --head --silent "localhost:5001" > /dev/null; then
curlexit=18;
echo "[0m[01;36m=IPFS=[0m get $ipfs"
# if we get error code 18, resume partial download
while [ $curlexit -eq 18 ]; do
# keep this inside an if statement, since on failure it doesn't abort the script
if $curl -C - "http://localhost:5001/api/v0/tar/cat?arg=$ipfs" --output "$ipfs.tar"; then
unpackFile "$ipfs.tar"
rm "$ipfs.tar"
set +o noglob
mv $(echo *) "$out"
finish
else
curlexit=$?;
fi
done
fi
if test -n "$url"; then
curlexit=18;
echo "Downloading $url"
while [ $curlexit -eq 18 ]; do
# keep this inside an if statement, since on failure it doesn't abort the script
if $curl "$url" -O; then
set +o noglob
tmpfile=$(echo *)
unpackFile $tmpfile
rm $tmpfile
ipfs_add
mv $(echo *) "$out"
finish
else
curlexit=$?;
fi
done
fi
echo "[01;31merror:[0m cannot download $ipfs from ipfs or the given url"
echo
set +o noglob
exit 1
|