instantchat/instantchatctl

82 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
WORKDIR="$(dirname "$(readlink -f "$0")")"
SCREEN_SOCKNAME="instantchat_server"
SERVER_BIN="./server/chatserver.py"
print_usage() {
echo "usage: $0 start|stop|restart|status|attach|pull"
}
if [ $# -ne 1 ]; then
print_usage
exit 1
fi
cd "$WORKDIR"
server_status() {
echo "Server status (screen -ls):"
if screen -ls | grep $SCREEN_SOCKNAME; then
echo "Server running"
else
echo "Server not running"
fi
}
server_start() {
if screen -ls | grep -q $SCREEN_SOCKNAME; then
echo "Server is already running!"
return 1
else
echo "Starting server..."
screen -dmS $SCREEN_SOCKNAME -L bash -c "$SERVER_BIN || read -p '-- press key to end screen session --'"
fi
}
server_stop() {
if screen -ls | grep -q $SCREEN_SOCKNAME; then
echo "Stopping server..."
kill $(screen -ls | grep $SCREEN_SOCKNAME | grep -o '[0-9]*')
else
echo "Server is not running!"
fi
}
server_restart() {
server_stop
server_start
}
server_attach() {
echo "Attaching to screen session..."
screen -r $SCREEN_SOCKNAME
}
server_pull() {
echo "Pulling from repository..."
if git pull --ff-only; then
server_restart
else
echo "Error while pulling!"
exit 1
fi
}
COMMAND=$1
case $COMMAND in
start) server_start ;;
stop) server_stop ;;
restart) server_restart ;;
status) server_status ;;
attach) server_attach ;;
pull) server_pull ;;
*)
echo "unknown command"
print_usage
exit 1
esac