#! /bin/sh
### BEGIN INIT INFO
# Provides:     redis-server
# Required-Start:   $syslog $remote_fs
# Required-Stop:    $syslog $remote_fs
# Should-Start:     $local_fs
# Should-Stop:      $local_fs
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    redis-server - Persistent key-value db
# Description:      redis-server - Persistent key-value db
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/redis-server
DAEMON_ARGS=<%= @redis_file_name %>
NAME=redis-server-<%= @name %>
DESC=redis-server-<%= @name %>

RUNDIR=/var/run/redis
PIDFILE=/var/run/redis/redis-server-<%= @name %>.pid

test -x $DAEMON || exit 0

if [ -r /etc/default/$NAME ]
then
  . /etc/default/$NAME
fi

. /lib/lsb/init-functions

set -e

if [ "$(id -u)" != "0" ]
then
  log_failure_msg "Must be run as root."
  exit 1
fi

Run_parts () {
  if [ -d /etc/redis/${NAME}.${1}.d ]
  then
    su redis -s /bin/sh -c "run-parts --exit-on-error /etc/redis/${NAME}.${1}.d"
  fi
}

case "$1" in
  start)
  echo -n "Starting $DESC: "
  mkdir -p $RUNDIR
  touch $PIDFILE
  chown redis:redis $RUNDIR $PIDFILE
  chmod 755 $RUNDIR

  if [ -n "$ULIMIT" ]
  then
    ulimit -n $ULIMIT
  fi

  Run_parts pre-up

  if start-stop-daemon --start --quiet --oknodo --umask 007 --pidfile $PIDFILE --chuid redis:redis --exec $DAEMON -- $DAEMON_ARGS
  then
    Run_parts post-up
    echo "$NAME."
  else
    echo "failed"
  fi
  ;;
  stop)
  echo -n "Stopping $DESC: "

  Run_parts pre-down

  if start-stop-daemon --stop --retry forever/TERM/1 --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON
  then
    Run_parts post-down
    echo "$NAME."
  else
    echo "failed"
  fi
  rm -f $PIDFILE
  sleep 1
  ;;

  restart|force-reload)
  ${0} stop
  ${0} start
  ;;

  status)
  status_of_proc -p ${PIDFILE} ${DAEMON} ${NAME}
  ;;

  *)
  echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload|status}" >&2
  exit 1
  ;;
esac

exit 0
