]> git.lizzy.rs Git - elidragon_v2.git/blob - scripts/common.sh
Separate elidragon_worlds mod
[elidragon_v2.git] / scripts / common.sh
1 # common functions used by Elidragon v2 scripts
2
3 function world_lock {
4         echo "/tmp/ElidragonV2_$1_lock"
5 }
6
7 function multiserver_lock {
8         echo "/tmp/ElidragonV2_multiserver_lock"
9 }
10
11 function mapserver_lock {
12         echo "/tmp/ElidragonV2_mapserver_lock"
13 }
14
15 function world_screenname {
16         echo "ElidragonV2_$1"
17 }
18
19 function multiserver_screenname {
20         echo "ElidragonV2_multiserver"
21 }
22
23 function mapserver_screenname {
24         echo "ElidragonV2_mapserver"
25 }
26
27 function kill_world {
28         kill `cat \`world_lock $1\``
29 }
30
31 function kill_multiserver {
32         kill -2 `cat \`multiserver_lock\``
33 }
34
35 function kill_mapserver {
36         kill `cat \`mapserver_lock\``
37 }
38
39 function world_running {
40         return $([ -f `world_lock $1` ])
41 }
42
43 function multiserver_running {
44         return $([ -f `multiserver_lock` ])
45 }
46
47 function mapserver_running {
48         return $([ -f `mapserver_lock` ])
49 }
50
51 function loop_worlds {
52         WORLDS=`ls worlds`
53         for WORLD in $WORLDS; do
54                 $1 $WORLD
55         done
56 }
57
58 function run_in_screen {
59         screen -dmS $1 bash -c "
60                 touch $2
61                 while [ -f $2 ]; do
62                         bash -c \"
63                                 echo \\$\\$ > $2
64                                 exec $3
65                         \"
66                 done
67         "
68 }
69
70 function start_mapserver {
71         echo -n "Starting mapserver... "
72         if ! mapserver_running; then
73                 cd worlds/creative
74                 while ! [ -f map.sqlite ]; do
75                         sleep 0.1
76                 done
77                 run_in_screen `mapserver_screenname` `mapserver_lock` "./mapserver-linux-x86_64"
78                 cd ../..
79                 echo -e "\e[32mDone\e[0m"
80         else
81                 echo -e "\e[31mmapserver is already running\e[0m"
82         fi
83 }
84
85 function stop_mapserver {
86         echo -n "Stopping mapserver... "
87         if mapserver_running; then
88                 kill_mapserver
89                 rm `mapserver_lock`
90                 echo -e "\e[32mDone\e[0m"
91         else
92                 echo -e "\e[31mmapserver is not running\e[0m"
93         fi
94 }
95
96 function restart_mapserver {
97         echo -n "Restarting mapserver... "
98         if mapserver_running; then
99                 kill_mapserver
100                 echo -e "\e[32mDone\e[0m"
101         else
102                 echo -e "\e[31mmapserver is not running\e[0m"
103         fi
104 }
105
106 function start_multiserver {
107         echo -n "Starting multiserver... "
108         if ! multiserver_running; then
109                 run_in_screen `multiserver_screenname` `multiserver_lock` "~/go/bin/multiserver"
110                 echo -e "\e[32mDone\e[0m"
111         else
112                 echo -e "\e[31mmultiserver is already running\e[0m"
113         fi
114 }
115
116 function stop_multiserver {
117         echo -n "Stopping multiserver... "
118         if multiserver_running; then
119                 kill_multiserver
120                 rm `multiserver_lock`
121                 echo -e "\e[32mDone\e[0m"
122         else
123                 echo -e "\e[31mmultiserver is not running\e[0m"
124         fi
125 }
126
127 function restart_multiserver {
128         echo -n "Restarting multiserver... "
129         if multiserver_running; then
130                 kill_multiserver
131                 echo -e "\e[32mDone\e[0m"
132         else
133                 echo -e "\e[31mmultiserver is not running\e[0m"
134         fi
135 }
136
137 function start_world {
138         echo -n "Starting $1... "
139         if ! world_running $1; then
140                 run_in_screen `world_screenname $1` `world_lock $1` "minetest --server --terminal --world worlds/$1 --config worlds/$1/minetest.conf --logfile worlds/$1/debug.txt"
141                 echo -e "\e[32mDone\e[0m"
142         else
143                 echo -e "\e[31m$1 is already running\e[0m"
144         fi
145 }
146
147 function stop_world {
148         echo -n "Stopping $1... "
149         if world_running $1; then
150                 kill_world $1
151                 rm `world_lock $1`
152                 echo -e "\e[32mDone\e[0m"
153         else
154                 echo -e "\e[31m$1 is not running\e[0m"
155         fi
156 }
157
158 function restart_world {
159         echo -n "Restarting $1... "
160         if world_running $1; then
161                 kill_world $1
162                 echo -e "\e[32mDone\e[0m"
163         else
164                 echo -e "\e[31m$1 is not running\e[0m"
165         fi
166 }