From 37014ec86d815ef05d145b4bd26af5be2085e340 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Fri, 18 Sep 2015 19:06:15 +1000 Subject: [PATCH] Implement better argument handling in install.sh --- tools/install.sh | 81 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 62 insertions(+), 19 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index 7084eab..07efeac 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -1,14 +1,72 @@ #!/bin/bash -if [ "$1" == "--me" ]; then +userinstall=no +steamcmd_user= +showusage=no + +while [ -n "$1" ]; do + case "$1" in + --me) + userinstall=yes + steamcmd_user="--me" + ;; + -h|--help) + showusage=yes + break + ;; + -*) + echo "Invalid option '$1'" + showusage=yes + break; + ;; + *) + if [ -n "$steamcmd_user" ]; then + echo "Multiple users specified" + showusage=yes + break; + elif getent passwd "$1" >/dev/null 2>&1; then + steamcmd_user="$1" + else + echo "Invalid user '$1'" + showusage=yes + break; + fi + ;; + esac + shift +done + +if [ "$userinstall" == "yes" -a "$UID" -eq 0 ]; then + echo "Refusing to perform user-install as root" + showusage=yes +fi + +if [ "$showusage" == "no" -a -z "$steamcmd_user" ]; then + echo "No user specified" + showusage=yes +fi + +if [ "$userinstall" == "yes" ]; then PREFIX="${PREFIX:-${HOME}}" EXECPREFIX="${EXECPREFIX:-${PREFIX}}" else EXECPREFIX="${EXECPREFIX:-/usr/local}" fi -if [ ! -z "$1" ]; then - if [ "$1" == "--me" -a "$UID" -ne 0 ]; then +if [ "$showusage" == "yes" ]; then + echo "You must specify your system steam user who own steamcmd directory to install ARK Tools." + echo "Specify the special used '--me' to perform a user-install." + echo "Usage: ./install.sh steam" + echo + echo "Environment variables affecting install:" + echo "EXECPREFIX: prefix in which to install arkmanager executable" + echo " [${EXECPREFIX}]" + echo "INSTALL_ROOT: staging directory in which to perform install" + echo " [${INSTALL_ROOT}]" + exit 1 +fi + +if [ "$userinstall" == "yes" ]; then # Copy arkmanager to ~/bin mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/bin" cp arkmanager "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager" @@ -28,10 +86,7 @@ if [ ! -z "$1" ]; then cp -n arkmanager.cfg "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg" sed -i "s|^steamcmd_user=\"steam\"|steamcmd_user=\"--me\"|;s|\"/home/steam|\"${PREFIX}|;s|/var/log/arktools|${PREFIX}/logs/arktools|" "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg" fi - elif [ "$1" == "--me" ]; then - echo "You specified the special '--me' user while running as root. This is not permitted." - exit 1 - else +else # Copy arkmanager to /usr/bin and set permissions cp arkmanager "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager" chmod +x "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager" @@ -128,18 +183,6 @@ if [ ! -z "$1" ]; then chown "$1" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" sed -i "s|^steamcmd_user=\"steam\"|steamcmd_user=\"$1\"|;s|\"/home/steam|\"/home/$1|" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" fi - fi -else - echo "You must specify your system steam user who own steamcmd directory to install ARK Tools." - echo "Specify the special used '--me' to perform a user-install." - echo "Usage: ./install.sh steam" - echo - echo "Environment variables affecting install:" - echo "EXECPREFIX: prefix in which to install arkmanager executable" - echo " [${EXECPREFIX}]" - echo "INSTALL_ROOT: staging directory in which to perform install" - echo " [${INSTALL_ROOT}]" - exit 1 fi exit 0