-
Notifications
You must be signed in to change notification settings - Fork 0
/
bosh_prepare
executable file
·67 lines (61 loc) · 1.46 KB
/
bosh_prepare
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
#!/usr/bin/env bash
SRC=$(pwd)/blobs
SHELL=/bin/bash
AWK=awk
read_spec() {
local spec="$1"
$AWK '/^files:/ {
while (getline) {
if ($1 == "-") {
if ($3 ~ /#/) {
url=$3$4;
sub(/#/, "", url)
print $2"@"url;
}
} else {
next;
}
}
}' "$spec"
}
exec_download() {
local output="$1"
local url="$2"
local package=$(dirname "${output}")
local src=$(basename "${output}")
(
cd ${SRC}
if [ ! -s "${output}" ]; then
echo " Downloading ${url} ..."
mkdir -p "${package}"
curl -L -s "${url}" -o "${output}"
fi
)
}
exec_prepare() {
local prepare="$1"
(
cd ${SRC}
${SHELL} "${prepare}"
)
}
main() {
for script in $(pwd)/packages/*/spec ; do
local base=$(dirname "${script}")
local prepare="${base}/prepare"
if [ -s "${prepare}" ]; then
echo "* Procesing ${prepare} ..."
exec_prepare "$prepare"
else
echo "* Procesing ${script} ..."
for spec in $(read_spec "${script}"); do
local downloadfile=$(echo $spec | cut -d'@' -f 1)
local downloadurl=$(echo $spec | cut -d'@' -f 2)
exec_download "${downloadfile}" "${downloadurl}"
done
fi
done
}
# Run!
mkdir -p $SRC
main