summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2012-12-07 20:09:46 -0800
committerBen Longbons <b.r.longbons@gmail.com>2012-12-07 20:09:46 -0800
commit2a6616793bdcbe3ce645323b71defd820756bbfd (patch)
treeb9250d2b5eae26608cae53e0b521a266a7cddca6 /bin
parente6ece9ca854958d847ae4c66fac21a225df3c60a (diff)
downloadtools-2a6616793bdcbe3ce645323b71defd820756bbfd.tar.gz
tools-2a6616793bdcbe3ce645323b71defd820756bbfd.tar.bz2
tools-2a6616793bdcbe3ce645323b71defd820756bbfd.tar.xz
tools-2a6616793bdcbe3ce645323b71defd820756bbfd.zip
Add restart scripts as used on the test server.
Diffstat (limited to 'bin')
-rwxr-xr-xbin/restart-all21
-rw-r--r--bin/restart-config25
-rwxr-xr-xbin/restart-login3
-rwxr-xr-xbin/restart-pid44
-rwxr-xr-xbin/restart-world28
5 files changed, 121 insertions, 0 deletions
diff --git a/bin/restart-all b/bin/restart-all
new file mode 100755
index 0000000..5d7e242
--- /dev/null
+++ b/bin/restart-all
@@ -0,0 +1,21 @@
+#!/bin/bash -e
+source restart-config
+if test -n "$REBUILD"
+then
+ cd $SERVER_SOURCE
+ git pull
+ make
+ make install prefix=${HOME}
+fi
+
+restart-login $LOGIN_WORLD
+
+for world in ${AUTO_WORLDS[@]}
+do
+ restart-world $world --auto
+done
+
+for world in ${MANUAL_WORLDS[@]}
+do
+ restart-world $world --manual
+done
diff --git a/bin/restart-config b/bin/restart-config
new file mode 100644
index 0000000..e19ab31
--- /dev/null
+++ b/bin/restart-config
@@ -0,0 +1,25 @@
+## TMW restart script settings
+## This file must be in ~/bin/ even though it's not executable
+
+## Mandatory filepath settings
+SERVER_SOURCE=~/eathena
+LOGIN_WORLD=~/tmwa-server-data
+AUTO_WORLDS=(
+ ~/tmwa-server-data
+)
+MANUAL_WORLDS=(
+ ~/tmwa-server-test
+)
+## Boolean settings (nonempty for true)
+## if not specified here, the value from the environment is used,
+## which is probably empty (false). However, some scripts may
+## provide command-line options to override the defaults.
+
+## Should the servers print their output to the terminal?
+# VERBOSE=yep
+
+## Should server sources be rebuilt?
+# REBUILD=sure
+
+## Should server data be pulled?
+# PULL=certainly
diff --git a/bin/restart-login b/bin/restart-login
new file mode 100755
index 0000000..765fe24
--- /dev/null
+++ b/bin/restart-login
@@ -0,0 +1,3 @@
+#!/bin/bash -e
+cd "$1"
+restart-pid login-server
diff --git a/bin/restart-pid b/bin/restart-pid
new file mode 100755
index 0000000..498bdcc
--- /dev/null
+++ b/bin/restart-pid
@@ -0,0 +1,44 @@
+#!/bin/bash -e
+# do nasty work here
+# The job of this script is twofold:
+# 1. kill the existing server, if it exists
+# 2. write the PID file and start the new server
+
+source restart-config
+
+PROCESS=$1
+
+if test -f $PROCESS.pid
+then
+ # if the process ID may change its name (e.g. via exec),
+ # then remove '$PROCESS' on the following line
+ PID=$(pgrep $PROCESS -u $UID -F $PROCESS.pid || true)
+ if test -n "$PID"
+ then
+ kill $PID
+ echo waiting for $PID to die so I can restart $PROCESS
+ while
+ ! kill -s 0 $PID
+ do
+ echo -n .
+ sleep 1
+ done
+ # This shouldn't be necessary, but somehow is
+ sleep 2
+ echo
+ else
+ echo $PROCESS.pid does not point to a valid process - nothing killed
+ fi
+else
+ echo No PID file $PROCESS.pid found - nothing killed
+fi
+
+if test -z "$VERBOSE"
+then
+ exec >/dev/null 2>&1
+fi
+
+{
+ # $$ is not reset in subshells
+ exec sh -c 'echo $$ > '$PROCESS'.pid; exec ./'$PROCESS
+} &
diff --git a/bin/restart-world b/bin/restart-world
new file mode 100755
index 0000000..7fead17
--- /dev/null
+++ b/bin/restart-world
@@ -0,0 +1,28 @@
+#!/bin/bash -e
+cd "$1"
+shift
+
+source restart-config
+
+for ARG
+do
+ if [ "$ARG" = --auto ]
+ then
+ PULL=y
+ elif [ "$ARG" = --manual ]
+ then
+ PULL=
+ else
+ echo unknown argument
+ exit 1
+ fi
+done
+
+if test -n "$PULL"
+then
+ git pull
+ (cd world/map/conf; cat magic.conf.template | ./spells-build > magic.conf)
+fi
+
+restart-pid char-server
+restart-pid map-server