#!/bin/bash #################### # Helper functions # #################### SELF="$0" function error { tput setaf 9 tput bold printf "%s: ERROR: " "$0" printf "$@" tput sgr0 exit 1 } function debug { if [ "$DEBUG" -ne 1 ]; then return fi tput setaf 12 printf "[DEBUG] " printf "$@" tput sgr0 } function check_file { [ -f "$1" ] || error "%s '%s' is not a file\n" "$2" "$1" } function check_dir { [ -d "$1" ] || error "%s '%s' is not a directory\n" "$2" "$1" } ################# # Configuration # ################# # Load the script configuration and set some defaults. source run-instance.local.sh || error "missing config\n" [ -z "$PREFIX" ] && error "PREFIX is not set\n" # fs_basepath, fs_overpath, fs_homepath and fs_game. true ${COMMON:="$PREFIX/common"} true ${OVER_PREFIX:="$PREFIX/over@"} true ${HOME_PREFIX:="$PREFIX/home@"} true ${FS_GAME:="slacker"} # Config directory. true ${CONFIG_PREFIX:="$PREFIX/config/"} # Executables. true ${GDB_WRAPPER:="$PREFIX/bin/gdb-wrapper2.sh"} true ${TREMDED_PREFIX:="$PREFIX/bin/tremded@"} # Debugging true ${DEBUG:=1} true ${NO_DEBUGGER:=0} if [ "$NO_DEBUGGER" -ne 0 ]; then GDB_WRAPPER="exec" fi ################### # The entry point # ################### # Check the argument. [ -z "$1" ] && error "instance name is missing\nusage: %s [INSTANCE]\n" "$SELF" # Figure out all the instance-specific paths. I="$1" TREMDED="$TREMDED_PREFIX$I" OVER="$OVER_PREFIX$I" HOME="$HOME_PREFIX$I" CONFIG_COMMON="$CONFIG_PREFIX/common.cfg" CONFIG_INST="$CONFIG_PREFIX/$I.cfg" # Do some integrity checks. check_file "$TREMDED" "the tremded" check_dir "$OVER" "the over directory" check_file "$OVER/$FS_GAME/game.so" "the game.so" check_dir "$HOME" "the home directory" check_file "$CONFIG_COMMON" "the common config" check_file "$CONFIG_INST" "the instance-specific config" # Server configuration is done by overwiting the autogen. cat "$CONFIG_COMMON" "$CONFIG_INST" > "$HOME/$FS_GAME/autogen_server.cfg" \ || error "couldn't overwrite the autogen\n" # cd to HOME (that's where cores will appear) and start the server. cd "$HOME" || error "cannot chdir to %s\n" "$HOME" "$GDB_WRAPPER" "$TREMDED" \ +set fs_basepath "$COMMON" \ +set fs_overpath "$OVER" \ +set fs_homepath "$HOME" \ +set fs_game "$FS_GAME" \ +set com_pipefile "pipe" \ +set dedicated 2 \ +map "atcs" \ +nocurses \ "$@" || error "couldn't start the server\n"