#! /bin/bash
### BEGIN INIT INFO
# Provides:          crate
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:
# Default-Stop:      0 1 6
# Short-Description: Starts crate
# chkconfig: - 80 15
# Description: Crate
### END INIT INFO

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

# Pull in sysconfig settings
[ -f /etc/sysconfig/crate ] && . /etc/sysconfig/crate

# if an alternative java 1.7 is available use it
if ! (java -version 2>&1 | grep -q "1.7") then
    if (alternatives --display java | grep -q "1.7.0") then
        JAVA_HOME=$(alternatives --display java | grep "1.7.0" | head -n 1 | cut -d' ' -f 1 | sed 's/bin\/java//')
    fi
fi


CRATE_HOME=/opt/crate
CRATE_USER=crate

DAEMON=${CRATE_HOME}/bin/crate
NAME=crate
PID_FILE=${PIDFILE-/var/run/${NAME}/${NAME}.pid}
LOCK_FILE=${LOCKFILE-/var/lock/subsys/${NAME}}

CRATE_PATH_LOG=${CRATE_PATH_LOG-/var/log/${NAME}}
CRATE_PATH_WORK=${CRATE_PATH_WORK-/tmp/${NAME}}
CRATE_PATH_CONF=${CRATE_PATH_CONF-/etc/${NAME}}
CRATE_CONFIG=${CRATE_CONFIG-${CRATE_PATH_CONF}/crate.yml}

DAEMON_OPTS="-d -p ${PID_FILE} \
    -Des.config=${CRATE_CONFIG} \
    -Des.path.conf=${CRATE_PATH_CONF} \
    -Des.path.home=${CRATE_HOME} \
    -Des.path.logs=${CRATE_PATH_LOG} \
    -Des.path.work=${CRATE_PATH_WORK}"

# These environment variables are passed over.
CRATE_MIN_MEM=${CRATE_MIN_MEM-256m}
CRATE_MAX_MEM=${CRATE_MAX_MEM-1g}
CRATE_INCLUDE=${CRATE_INCLUDE-${CRATE_HOME}/bin/crate.in.sh}
JAVA_OPTS=-XX:+UseCompressedOops

start() {
    echo -n $"Starting ${NAME}: "
    mkdir -p $CRATE_PATH_WORK
    daemon --pidfile=${PID_FILE} --user $CRATE_USER \
        CRATE_HOME=$CRATE_HOME \
        CRATE_INCLUDE=$CRATE_INCLUDE \
        CRATE_MIN_MEM=$CRATE_MIN_MEM \
        CRATE_MAX_MEM=$CRATE_MAX_MEM \
        JAVA_HOME=$JAVA_HOME \
        JAVA_OPTS=$JAVA_OPTS \
        $DAEMON $DAEMON_OPTS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch $LOCK_FILE
    return $RETVAL
}

stop() {
    echo -n $"Stopping ${NAME}: "
    killproc -p ${PID_FILE} -d 10 $DAEMON
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f ${LOCK_FILE} ${PID_FILE}
    return $RETVAL
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status -p ${PID_FILE} $DAEMON
        RETVAL=$?
        ;;
    restart|force-reload)
        stop
        start
        ;;
    *)
        N=/etc/init.d/${NAME}
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        RETVAL=2
        ;;
esac

exit $RETVAL
