| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 | #!/usr/bin/env bash#Paul Klumpp 2012-11-19cwd=$(pwd)q2srv=$cwd/../q2srv/cd $cwdfunction checkuser {    if [ "${USER}" == "root" ]; then        echo "Nono! Don't run this as root! Don't!"        echo "Switch to a normal user!"        echo        exit    fi}function checkinstalled {    if [ "$1" != "" ]; then        woot=$(which "$1" 2> /dev/null)        if [ -f "$woot" ]; then            echo 1        else            echo 0        fi    fi}function systemcheck {    echo "Before continuing, make sure you have the following installed:"    echo "* git"    echo "* make"    echo "* cc"    echo "* screen"    echo "* realpath"    echo "* Lua 5.1, only 5.1!, dev headers"    echo "* libz, also known as zlib1g-dev on Debian/Ubuntu"    echo     echo "  PRESS ENTER"    echo    read    software="git make cc realpath lua screen"    for soft in $software; do        see=$(checkinstalled "$soft")        if [ $see -eq 0 ]; then            echo "'$soft' not found on your system. Please have a system administrator install it!"            exit        fi    done}level=0function checkargs {    case "$1" in        clean)            level=3        ;;        update)            level=2        ;;        install)            level=1        ;;        *)            echo "Usage: $0 <clean/update/install>"            echo            echo "  clean: cleans the compilation directories, compiles and installs"            echo "  update: compiles and installs"            echo "  install: just installs the binaries, which are hopefully ready"            echo            exit        ;;    esac}function main {    checkuser    checkargs $*    systemcheck    repo[1]="q2admin"    url[1]="https://github.com/hifi/q2admin.git"    cleanit[1]="make clean"    makeit[1]="make"    repo[2]="aq2-tng"    url[2]="https://github.com/hifi/aq2-tng.git"    cleanit[2]="cd source && pwd && make clean"    makeit[2]="cd source && pwd && make"    repo[3]="q2a_mvd"    url[3]="https://gitlab.netdome.biz/pklumpp/q2a_mvd.git"    cleanit[3]=""    makeit[3]=""    repo[4]="gs_starter"    url[4]="https://gitlab.netdome.biz/pklumpp/linux-gameserver-starter.git"    cleanit[4]=""    makeit[4]=""    repo[5]="q2pro"    url[5]="git://github.com/AndreyNazarov/q2pro.git"    cleanit[5]="make clean"    makeit[5]="cp -v ../q2proconfig ./.config && INCLUDES='-DUSE_PACKETDUP=1' make q2proded"    ARCH=$(uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc/ -e s/sparc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/)    for idx in ${!repo[*]}; do        echo        # always get sources        echo "$idx: ${repo[$idx]} from ${url[$idx]}"        if [ ! -d "${repo[$idx]}" ]; then            echo "Source dir missing, we get it"            GIT_SSL_NO_VERIFY=true git clone ${url[$idx]} ${repo[$idx]}        else            echo "Source dir exists, we update it"            cd $cwd/${repo[$idx]}             GIT_SSL_NO_VERIFY=true git pull            cd ..        fi        if [ $level -gt 2 ]; then            # clean it            cd $cwd/${repo[$idx]}            eval ${cleanit[$idx]}        fi        if [ $level -gt 1 ]; then            # compile it            cd $cwd/${repo[$idx]}            eval ${makeit[$idx]}        fi        if [ $level -gt 0 ]; then            # install it            case "${repo[$idx]}" in                aq2-tng)                    if [ -f "game$ARCH.so" ]; then                        cp -v game$ARCH.so $q2srv/action/game$ARCH.real.so                        cd ..                        cd action                        cp -v prules.ini $q2srv/action/                        cp -vr doc/ $q2srv/action/                        cp -vr models/ $q2srv/action/                        cp -vr pics/ $q2srv/action/                        cp -vr players/ $q2srv/action/                        cp -vr sound/ $q2srv/action/                        cp -vr tng/ $q2srv/action/                    else                        echo "Whaaat? 'aq2-tng' did not compile. Something was wrong."                        echo                        echo "Please find the error messages of the compilation happening above and"                        echo "file them as an issue at https://github.com/hifi/aq2-tng"                        exit                    fi                ;;                q2admin)                    if [ -f "game$ARCH.so" ]; then                        cp -v game$ARCH.so $q2srv/action/game$ARCH.so                        cp -vr plugins/ $q2srv/                    else                        echo "W0000000t .. q2admin did not compile. Something was wrong."                        echo                        echo "It's possible that Lua5.1 is missing. "                        echo "Or you're just using 'install' as parameter and forgot to compile q2admin first."                        echo                        echo "If you are on Debian or Ubuntu, please try to install the following"                        echo "package server wide: liblua5.1-0-dev"                        echo                        echo "To do that, try: 'sudo apt-get install liblua5.1-0-dev'"                        echo                        echo "Then start this script again."                        echo                        exit                    fi                ;;                q2a_mvd)                    cp -v mvd.lua $q2srv/plugins/                    if [ ! -f "$q2srv/plugins/mvd_transfer.sh" ]; then                        cp -uv mvd_transfer.sh $q2srv/plugins/                    fi                ;;                gs_starter)                    cp -v gs_starter.sh $q2srv/                    if [ ! -f "$q2srv/gs_starter.cfg" ]; then                        cp -v gs_starter.cfg $q2srv                    fi                ;;                q2pro)                    if [ -f "q2proded" ]; then                        cp -v q2proded $q2srv/                    else                        echo "Errm... q2pro dedicated did not compile. Something was wrong."                        echo                        echo "It's possible that ZLIB is missing."                        echo "Or you're just using 'install' as parameter and forgot to compile q2proded first."                        echo                        echo "If you are on Debian or Ubuntu, please try to install the following"                        echo "package server wide: zlib1g-dev"                        echo                        echo "To do that, try: 'sudo apt-get install zlib1g-dev'"                        echo                        echo "Then start this script again."                        echo                        exit                    fi                ;;            esac        fi        cd $cwd        echo    done    echo     echo "Everything should be in place now."    echo    echo "Please review the files h_passwords.cfg, aq2_*.cfg in 'q2srv/action'."    echo "Other than that ;) read the README file"    echo}main $*# vim: expandtab tabstop=4 autoindent:# kate: space-indent on; indent-width 4; mixedindent off;
 |