#!/bin/sh

### BEGIN INIT INFO
# Provides:          arangodb
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: arangodb
# Description:       arango database server 
### END INIT INFO

. /lib/lsb/init-functions

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/arangod
DESC="arango database server"
NAME="arangod"
PIDDIR=/var/run/arangodb
PIDFILE=/var/run/arangodb/arangod.pid
CONF=/etc/arangodb/arangod.conf

test -x $DAEMON || exit 0

if [ `id -u` -ne 0 ]; then
   echo "You need root privileges to run this script"
   exit 1
fi

start () {
    [ -d $PIDDIR ] || mkdir $PIDDIR || exit 1

    ( cd /var/log/arangodb && chown -R arangodb:arangodb . ) || exit 1
    ( cd /var/lib/arangodb && chown -R arangodb:arangodb . ) || exit 1
    ( cd /var/lib/arangodb-apps && chown -R arangodb:arangodb . ) || exit 1
    ( cd $PIDDIR && chown arangodb:arangodb . ) || exit 1

    if [ "$1" = "--upgrade" ]; then
      $DAEMON -c $CONF --uid arangodb --gid arangodb --no-server $@
      RETVAL=$?
      log_end_msg $RETVAL
    else
      $DAEMON -c $CONF --uid arangodb --gid arangodb --no-server --log.tty "" --check-version
      RETVAL=$?

      if [ "$RETVAL" -eq 0 ];  then
        $DAEMON -c $CONF --uid arangodb --gid arangodb --pid-file "$PIDFILE" --temp-path "/var/tmp/arangod" --log.tty "" --supervisor $@
	RETVAL=$?
	log_end_msg $RETVAL
      else
	log_failure_msg "database version check failed, maybe need to run 'upgrade'?"
      fi
    fi

    return $RETVAL
}

case "$1" in
  start)
    log_daemon_msg "Starting $DESC" "$NAME"

    start
    exit $?
    ;;

  stop)
    log_daemon_msg "Stopping $DESC" "$NAME"

    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
    RETVAL=$?
    log_end_msg $RETVAL

    log_daemon_msg "Waiting for shutdown" ""

    c=0

    while test -f $PIDFILE -a $c -lt 30 && ps --pid `cat $PIDFILE` > /dev/null; do
      log_progress_msg "."
      sleep 2
      c=`expr $c + 1`
    done

    log_progress_msg "done"
    log_end_msg 0

    rm -f $PIDFILE
    exit $RETVAL
    ;;

  restart)
    $0 stop
    sleep 3
    $0 start
    exit $?
    ;;

  force-reload)
    $0 restart
    exit $?
    ;;

  status)
    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
    ;;

  upgrade)
    log_daemon_msg "Upgrading $DESC" "$NAME"

    start --upgrade
    exit $?
    ;;

  *)
    log_success_msg "Usage: /etc/init.d/arangodb {start|stop|restart|force-reload|status|upgrade}"
    exit 1
    ;;
esac

exit 0
