-
Notifications
You must be signed in to change notification settings - Fork 6
/
dm.sh
97 lines (84 loc) · 1.66 KB
/
dm.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
#!/bin/bash
dmepath=""
retval=1
for var
do
if [[ $var != -* && $var == *.dme ]]
then
dmepath=`echo $var | sed -r 's/.{4}$//'`
break
fi
done
if [[ $dmepath == "" ]]
then
echo "No .dme file specified, aborting."
exit 1
fi
if [[ -a $dmepath.mdme ]]
then
rm $dmepath.mdme
fi
cp $dmepath.dme $dmepath.mdme
if [[ $? != 0 ]]
then
echo "Failed to make modified dme, aborting."
exit 2
fi
for var
do
arg=`echo $var | sed -r 's/^.{2}//'`
if [[ $var == -D* ]]
then
sed -i '1s/^/#define '$arg'\n/' $dmepath.mdme
continue
fi
if [[ $var == -M* ]]
then
sed -i '1s/^/#define MAP_OVERRIDE\n/' $dmepath.mdme
sed -i 's!// BEGIN_INCLUDE!// BEGIN_INCLUDE\n#include "_maps\\'$arg'.dm"!' $dmepath.mdme
continue
fi
done
#windows
if [[ `uname` == MINGW* ]]
then
dm=""
if hash dm.exe 2>/dev/null
then
dm='dm.exe'
elif [[ -a '/c/Program Files (x86)/BYOND/bin/dm.exe' ]]
then
dm='/c/Program Files (x86)/BYOND/bin/dm.exe'
elif [[ -a '/c/Program Files/BYOND/bin/dm.exe' ]]
then
dm='/c/Program Files/BYOND/bin/dm.exe'
fi
if [[ $dm == "" ]]
then
echo "Couldn't find the DreamMaker executable, aborting."
exit 3
fi
"$dm" $dmepath.mdme 2>&1 | tee result.log
retval=$?
if ! grep '\- 0 errors, 0 warnings' result.log
then
retval=1 #hard fail, due to warnings or errors
fi
else
if hash DreamMaker 2>/dev/null
then
DreamMaker $dmepath.mdme 2>&1 | tee result.log
retval=$?
if ! grep '\- 0 errors, 0 warnings' result.log
then
retval=1 #hard fail, due to warnings or errors
fi
else
echo "Couldn't find the DreamMaker executable, aborting."
exit 3
fi
fi
mv $dmepath.mdme.dmb $dmepath.dmb
mv $dmepath.mdme.rsc $dmepath.rsc
rm $dmepath.mdme
exit $retval