#!/bin/sh

prog=gangliarc
RUN=yes

# sysconfig files
if [ -r /etc/sysconfig/nordugrid ]; then
    . /etc/sysconfig/nordugrid
elif [ -r /etc/default/nordugrid ]; then
    . /etc/default/nordugrid
fi
if [ -r /etc/sysconfig/${prog} ]; then
    . /etc/sysconfig/${prog}
elif [ -r /etc/default/${prog} ]; then
    . /etc/default/${prog}
fi

readconfigvar() {
    fname=$1
    if [ ! -r "$fname" ]; then
      return
    fi
    bname="[$2]"
    vname=$3
    value=
    cat "$fname" | grep -e '^\[' -e "^${vname}=" | {
        while true; do
            read line
            if [ ! $? = 0 ] ; then
                return
            fi
            if [ "$line" = "$bname" ] ; then
                while true ; do
                    read line
                    if [ ! $? = 0 ] ; then
                        return
                    fi
                    lstart=`echo "$line" | head -c 1`
                    if [ "$lstart" = '[' ] ; then
                        return
                    fi
                    vlname=`echo "$line" | sed 's/=.*//;t;s/.*//'`
                    if [ "$vlname" = "$vname" ] ; then
                        val=`echo "$line" | sed 's/[^=]*=//'`
                        eval "echo $val"
                        return
                    fi
                done
            fi
        done
    }
}

# ARC_CONFIG
if [ "x$ARC_CONFIG" = "x" ]; then
    if [ -r $ARC_LOCATION/etc/arc.conf ]; then
        ARC_CONFIG=$ARC_LOCATION/etc/arc.conf
    elif [ -r /etc/arc.conf ]; then
        ARC_CONFIG=/etc/arc.conf
    fi
fi

if [ ! -r "$ARC_CONFIG" ]; then
    echo "ARC configuration not found (usually /etc/arc.conf)"
    exit 1
fi

CMD=`readconfigvar "$ARC_CONFIG" gangliarc python_bin_path`
if [ "x$CMD" = "x" ]; then
    CMD=/usr/bin/python
fi

if [ ! -x "$CMD" ]; then
    echo "Cannot find python executable"
    exit 1
fi


PID_FILE=`readconfigvar "$ARC_CONFIG" gangliarc pidfile`
LOG_FILE=`readconfigvar "$ARC_CONFIG" gangliarc logfile`

if [ `id -u` = 0 ] ; then
    if [ "x$PID_FILE" = "x" ]; then
        PID_FILE=/var/run/$prog.pid
    fi
    if [ "x$LOG_FILE" = "x" ]; then
        LOG_FILE=/var/log/arc/$prog.log
    fi
else
    if [ "x$PID_FILE" = "x" ]; then
        PID_FILE=$HOME/$prog.pid
    fi
    if [ "x$LOG_FILE" = "x" ]; then
        LOG_FILE=$HOME/$prog.log
    fi
fi

CMD="$CMD -c 'import gangliarc; gangliarc.run(\"$ARC_CONFIG\", \"$PID_FILE\", \"$LOG_FILE\")'"

if [ "$RUN" != "yes" ] ; then
    echo "gangliarc disabled, please adjust the configuration to your needs "
    echo "and then set RUN to 'yes' in /etc/default/gangliarc to enable it."
    return 0
fi

exec "$CMD"
