#!/bin/sh
#
# Aprox        Startup script for Aprox
#
# chkconfig: - 86 14
# description: AProx is a simple repository manager and tooling platform.
#              It is designed for use with Apache Maven and other applications
#              that use the Maven repository format.
# processname: aprox
# config: /etc/sysconfig/aprox
# pidfile: /var/run/aprox.pid
#
### BEGIN INIT INFO
# Provides: aprox
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: start and stop AProx Repo Manager
# Description: AProx is a simple repository manager and tooling platform. 
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

PROG=aprox
APROX_HOME=/opt/aprox
#LOCKFILE=/var/lock/subsys/$PROG
EXEC="cd $APROX_HOME && bin/aprox.sh > /dev/null & echo \$!"
RETVAL=0
RUNAS=aprox
PIDFILE=/var/run/aprox.pid

start() {
    if [ -f $PIDFILE ] && [ "x$(cat $PIDFILE)" != "x" ] && kill -0 $(cat $PIDFILE) 2> /dev/null; then
        echo "$PROG (pid $(cat $PIDFILE)) already running" >&2
        REtVAL=1
    else
        echo -n $"Starting $PROG: " >&2
        su -c "$EXEC" $RUNAS > $PIDFILE
        REtVAL=$?
        [ $RETVAL -eq 0 ] && success || failure
        echo
        #[ $RETVAL -eq 0 ] && touch $LOCKFILE
    fi
    return $RETVAL
}
stop() {
    if [ -f $PIDFILE ] && [ "x$(cat $PIDFILE)" != "x" ] && kill -0 $(cat $PIDFILE) 2> /dev/null; then
        APROXPID=$(cat $PIDFILE)
        JAVAPID=$(pgrep -P $APROXPID)

        if [ "x$JAVAPID" == "x" ]; then
            echo -n $"Shutting down $PROG: " >&2
            kill -15 $APROXPID &> /dev/null && rm -f "$PIDFILE"
            RETVAL=$?
        else
            echo -n $"Shutting down java started by $PROG: " >&2
            kill -15 $JAVAPID &> /dev/null && rm -f "$PIDFILE"
            RETVAL=$?
       fi

        [ $RETVAL -eq 0 ] && success || failure
        echo
        #[ $RETVAL -eq 0 ] && rm -f $LOCKFILE $PIDFILE
    else
        echo "$PROG not running" >&2
        return 1
    fi
}
restart() {
    stop
    echo "Waiting 10s for old process to stop" >&2
    sleep 10
    start
}
status() {
    if [ -f $PIDFILE ] && [ "x$(cat $PIDFILE)" != "x" ] && kill -0 $(cat $PIDFILE) 2> /dev/null; then
        PID=$(cat $PIDFILE)
        echo "$PROG (pid  ${PID}) is running..." >&2
    else
        echo "$PROG is stopped" >&2
    fi
}

# See how we're called.
case "$1" in
  start)
    start
    RETVAL=$?
    ;;
  stop)
    stop
    RETVAL=$?
    ;;
  restart)
    restart
    ;;
  condrestart)
    [ -f $PIDFILE ] && [ "x$(cat $PIDFILE)" != "x" ] && kill -0 $(cat $PIDFILE) 2> /dev/null && restart
    RETVAL=$?
    ;;
  status)
    status
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    RETVAL=0
esac

exit $RETVAL
