#!/bin/sh

usage() {
    echo "Usage: $0 [start|run|stop|check]"
    exit 1
}

setprogdir() {
    PRG="$0"
    while [ -h "$PRG" ]; do
        ls=`ls -ld "$PRG"`
        link=`expr "$ls" : '.*-> \(.*\)$'`
        if expr "$link" : '/.*' > /dev/null; then
            PRG="$link"
        else
            PRG=`dirname "$PRG"`/"$link"
        fi
    done

    PRGDIR=`dirname "$PRG"`
    PRG_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
}

checkapprunning() {
    if [ -f ${PIDFILE} ]; then
        #verify if the process is actually still running under this pid
        OLDPID=`cat ${PIDFILE}`
        RESULT=`ps -ef | grep ${OLDPID} | grep java`  

        if [ -n "${RESULT}" ]; then
            return 0
        else
            return 1
        fi
    fi
    return 1
}

#Main Routine 

[[ $# -eq 0 ]] && usage
setprogdir

OPT=$1
SCRIPTNAME=`basename $0`
PIDFILE="$PRG_HOME"/pid/appstart.pid

_MAIN_CLASS="io.polyglotted.applauncher.server.Main"

case "$OPT" in
    start)
        if ( checkapprunning ) then
            echo "$SCRIPTNAME is already running"
            exit 2
        fi 
        . "$PRG_HOME"/bin/appstart -b $_MAIN_CLASS
        echo $! > $PIDFILE
        ;;

    run)
        if ( checkapprunning ) then
            echo "$SCRIPTNAME is already running"
            exit 2
        fi
        . "$PRG_HOME"/bin/appstart -f $_MAIN_CLASS
        ;;

    stop)
        if ( checkapprunning ) then
            kill -9 `cat ${PIDFILE}`
            rm $PIDFILE
        else 
            echo "$SCRIPTNAME is not running"
        fi
        ;;

    check)
        if ( checkapprunning ) then
            echo "$SCRIPTNAME is running"
        else 
            echo "$SCRIPTNAME is not running"
        fi
        ;;
esac
