home · contact · privacy
Add wrapper script over wrapper script so log messages get read on exit.
[plomrogue] / start_server_client_union.sh
1 #!/bin/sh
2
3 # Abort the script on error.
4 set -e
5
6 # Use shell script's arguments for server and pipe server output to log file.
7 # This script's wrapper script will read it out on exit.
8 ./roguelike-server "$@" > log 2>&1 &
9
10 echo TEST >> log
11
12 # Give server some time to start up and exit on error.
13 sleep 0.01
14
15 # The client should not start if the server is not running. (If the server was
16 # running in the foreground, any error exit of it so far would be caught by "set
17 # -e" above. But "set -e" is blind to error codes generated in the background.)
18 kill -0 $! 2> /dev/null
19
20 # Give server some time (max. 10 seconds) to generate its worldstate file.
21 i=0
22 while [ ! -e server/worldstate ] && [ $i -le 1000 ]
23 do
24     sleep 0.01
25     i=`expr $i + 1`
26 done
27 if [ ! -e server/worldstate ]
28 then
29     echo "Server failed generating worldstate file within given time limit."
30     false
31 fi
32
33 # Only start the interface when everything else went well.
34 kill -0 $! 2> /dev/null
35 ./roguelike-client