forked from aburch/simutrans
-
Notifications
You must be signed in to change notification settings - Fork 1
/
get_pak.sh
executable file
·157 lines (141 loc) · 4.81 KB
/
get_pak.sh
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/bin/bash
#
# script to fetch pak sets
#
# make sure that non-existing variables are not ignored
set -u
# fall back to "/tmp" if TEMP is not set
TEMP=${TEMP:-/tmp}
# parameter: url and filename
do_download(){
if which curl >/dev/null; then
curl -L "$1" > "$2" || {
echo "Error: download of file $2 failed (curl returned $?)" >&2
rm -f "$2"
exit 4
}
else
if which wget >/dev/null; then
wget -q -N "$1" -O "$2" || {
echo "Error: download of file $2 failed (wget returned $?)" >&2
rm -f "$2"
exit 4
}
else
echo "Error: Neither curl or wget are available on your system, please install either and try again!" >&2
exit 6
fi
fi
}
# two parameter, url, zipfilename
DownloadInstallZip(){
echo "downloading from $1"
do_download "$1" "$TEMP/$2"
echo "installing from $2"
# first try to extract all files in simutrans/
unzip -o -C -q "$TEMP/$2" "simutrans/*" -d . 2> /dev/null
if [ $? -eq 11 ]; then
# no simutrans folder in the zipfile
# unzip directly into simutrans/
unzip -o -C -q "$TEMP/$2" -d simutrans
fi
rm "$TEMP/$2"
}
# generated list of pak sets
paksets=( \
"http://downloads.sourceforge.net/project/simutrans/pak64/120-0/simupak64-120-0.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak.german/pak64.german-110-0c/simupak-german64-110-0c.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak64.japan/120-0/simupak64.japan-120-0.zip" \
"http://downloads.sourceforge.net/project/simutrans/pakHAJO/pakHAJO_102-2-2/pakHAJO_0-102-2-2.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak96.comic/pak96.comic%20for%20111-3/pak96.comic-0.4.10-plus.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak128/pak128%20for%20112-2/pak128-2.3.0--112.2.zip" \
"http://downloads.sourceforge.net/project/simutrans/PAK128.german/PAK128.german_0.6.1_112.x/PAK128.german_0.6.1_112.x.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak192.comic/pak192comic%20for%20112-3/pak192comic-0.3-112-3up.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak32.comic/pak32.comic%20for%20102-0/pak32.comic_102-0.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak64.contrast/pak64.Contrast_910.zip" \
"http://hd.simutrans.com/release/PakHD_v04B_100-0.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak128.britain/pak128.Britain%20for%20112-0/pak128.Britain.1.14-112-0.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak128.japan/for%20Simutrans%20110.0.1/pak128.japan-110.0.1-version16-08-2011.zip" \
"http://downloads.sourceforge.net/project/simutrans/pak64.scifi/pak64.scifi_112.x_v0.2.zip" \
"http://downloads.sourceforge.net/project/ironsimu/pak48.Excentrique/v018/pak48-excentrique_v018.zip" \
)
tgzpaksets=( \
"http://simutrans.bilkinfo.de/pak64.ho-scale-latest.tar.gz" \
)
choices=()
installpak=()
echo "-- Choose at least one of these paks --"
let setcount=0
let choicecount=0
let "maxcount = ${#paksets[*]}"
while [ "$setcount" -lt "$maxcount" ]; do
installpak[choicecount]=0
urlname=${paksets[$setcount]}
zipname="${urlname##http*\/}"
choicename="${zipname%.zip}"
choicename="${choicename/simupak/pak}"
choices[choicecount]=$choicename
let "setcount += 1"
let "choicecount += 1"
echo "${choicecount}) ${choicename}"
done
while true; do
read -p "Which paks to install? (enter number or (i) to install or (x) to exit)" pak
#exit?
if [[ $pak = [xX] ]]; then
exit
fi
# test if installation now
if [[ $pak = [iI] ]]; then
echo "You will install now"
let setcount=0
while [ $setcount -lt $choicecount ]; do
if [ ${installpak[$setcount]} -gt 0 ]; then
let "displaycount=$setcount+1"
echo "${displaycount}) ${choices[$setcount]}"
fi
let "setcount += 1"
done
read -p "Is this correct? (y/n)" yn
if [[ $yn = [yY] ]]; then
break
fi
# edit again
echo "-- Choose again one of these paks --"
let setcount=0
while [ $setcount -lt $choicecount ]; do
echo "${setcount}) ${choices[$setcount]}"
let "setcount += 1"
done
let "pak=0"
fi
# otherwise it should be a number
if [[ $pak =~ ^[0-9]+$ ]]; then
let "setcount=pak-1"
if [ $setcount -lt $choicecount ]; then
if [ $setcount -ge 0 ]; then
status=${installpak[$setcount]}
if [ $status -lt 1 ]; then
echo "adding ${choices[$setcount]}"
installpak[$setcount]=1
else
echo "not installing ${choices[$setcount]}"
installpak[$setcount]=0
fi
fi
fi
fi
done
# first the regular pak sets
pushd ..
let setcount=0
let "maxcount = ${#paksets[*]}"
while [ "$setcount" -lt "$maxcount" ]; do
if [ "${installpak[$setcount]}" -gt 0 ]; then
urlname=${paksets[$setcount]}
zipname="${urlname##http*\/}"
DownloadInstallZip "$urlname" "$zipname"
fi
let "setcount += 1"
done
exit