#!/bin/sh
#
#
### BEGIN INIT INFO
# Provides:          myarchiva
# Required-Start:    $local_fs $remote_fs $network $time $named
# Required-Stop:     $local_fs $remote_fs $network $time $named
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Apache Archiva powered by Apache Tomcat
# Description:       Archiva manages software artifacts required for development, deployment
### END INIT INFO

#
# init.d / servicectl compatibility (openSUSE)
#
if [ -f /etc/rc.status ]; then
    . /etc/rc.status
    rc_reset
fi

# Source function library.
if [ -r /etc/init.d/functions ]; then
    . /etc/init.d/functions
fi

# Read config file
if [ -r "/etc/sysconfig/myarchiva" ]; then
    . /etc/sysconfig/myarchiva
fi

export CATALINA_OPTS CATALINA_OUT CATALINA_PID

RETVAL=0
prog="myarchiva"
user="myarchiv"
exec="/opt/myarchiva/bin/catalina.sh"
lockdir=/var/lock/subsys
lockfile=$lockdir/myarchiva
config=/etc/sysconfig/myarchiva

start() {
    echo -n $"Starting $prog: "
    touch $CATALINA_PID
    chown $user:$user $CATALINA_PID

    ALL_VARS=$(compgen -A variable | grep APP_)

    for RES_KEY in $ALL_VARS; do
      eval RES_VAL=\$${RES_KEY}
      XREPLACE="$XREPLACE | sed 's|@${RES_KEY}@|$RES_VAL|g'"
    done

    for XFILE in $CATALINA_HOME/conf/server.xml.skel $CATALINA_HOME/conf/jmxremote.access.skel $CATALINA_HOME/conf/jmxremote.password.skel; do
      DXFILE=${XFILE%.skel}
      eval "cat ${XFILE} $XREPLACE > ${DXFILE}"
    done

    if [ ! -d /var/run/myarchiva ]; then
      mkdir -p /var/run/myarchiva
      chmod 755 /var/run/myarchiva
      chown $user:$user /var/run/myarchiva
    fi

    # start_daemon on Suse, daemon on RH
    if [ -x /sbin/startproc ]; then
      HOME=/var/lib/myarchiva startproc -s -e -l /var/log/myarchiva/start.log -u $user $exec start
      sleep 1
      if [ -r "$CATALINA_PID" ]; then
        PID=`cat "$CATALINA_PID"`
        ps -p $PID >/dev/null 2>&1
        if [ $? -eq 0 ] ; then
          RETVAL=0
        else
          RETVAL=1
        fi
      fi
    else
      daemon --user=$user $exec start
      RETVAL=$?
    fi
    echo
    [ $RETVAL -eq 0 ] && [ -d $lockdir ] && touch $lockfile
}

stop() {
    echo -n $"Stopping $prog: "
    RETVAL=0
    if [ -s $CATALINA_PID ]; then
      $exec stop $SHUTDOWN_WAIT -force
      RETVAL=$?
    fi
    echo
    [ $RETVAL -eq 0 ] && [ -d $lockdir ] && rm -f $lockfile
}

status() {
    $exec status
}

restart() {
    # start_daemon on Suse, daemon on RH
    if [ -x /sbin/start_daemon ]; then
      start_daemon -u $user $exec restart
    else
      daemon --user=$user $exec restart
    fi
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status
        RETVAL=$?
        ;;
  restart|force-reload|reload)
        stop
        start
        ;;
    version)
        echo "${prog} version 2.1.1 release 73.1"
        ;;
  *)
        echo $"Usage: $prog {start|stop|restart|force-reload|reload|status|version}"
        RETVAL=2
esac

exit $RETVAL
