#!/bin/bash
# chkconfig: 2345 99 60
# description: Newrelic Redis Agent
# processname: cardiff
# config: /etc/sysconfig/cardiff
# pidfile: /var/run/cardiff/cardiff.pid

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

# Tinman App
AGENT="/usr/bin/cardiff"

# Configuration dir
CONFIG_DIR="/etc"

# PID File
PID_FILE="/var/run/cardiff.pid"

# Additional arguments
OPTS=""


if [ -f /etc/sysconfig/cardiff ]; then
  # Include configuration
  . /etc/sysconfig/cardiff
fi

# Configuration file
CONF="${CONF:-${CONFIG_DIR}/cardiff.yaml}"

if [ ! -f "${CONF}" ]; then
  echo -n $"cannot find cardiff configuration file: '${CONF}'"
  failure $"cannot find cardiff configuration file: '${CONF}'"
  echo
  exit 1
fi

OPTS="-c ${CONF} ${OPTS}"

dostatus() {
  [ -e "${PID_FILE}" ] || return 1

  local pid=$(cat ${PID_FILE})
  [ -d /proc/${pid} ] || return 1

  [ -z "$(grep $AGENT /proc/${pid}/cmdline)" ] && return 1
  return 0
}

start() {
  if [ ${EUID} -ne 0 ]; then
    echo -n $"you must be root"
    failure $"you must be root"
    echo
    return 1
  fi

  echo -n $"Starting ${AGENT}: "

  dostatus
  if [ $? -eq 0 ]; then
    echo -n $"cannot start $AGENT: already running (pid: $(cat ${PID_FILE}))";
    failure $"cannot start $AGENT: already running (pid: $(cat ${PID_FILE}))";
    echo
    return 1
  fi

  ${AGENT} ${OPTS} && success || failure
  RETVAL=$?

  echo
  return ${RETVAL}
}

stop() {
  if [ ${EUID} -ne 0 ]; then
    echo -n $"you must be root"
    failure $"you must be root"
    echo
    return 1
  fi

  echo -n $"Stopping ${AGENT}: "

  dostatus
  if [ $? -ne 0 ]; then
    echo -n $"cannot stop $AGENT: not running"
    failure $"cannot stop $AGENT: not running"
    echo
    return 1
  fi

  killproc -p "${PID_FILE}" "${AGENT}"
  RETVAL=$?
  [ $RETVAL -eq 0 ] && rm -f ${PID_FILE}
  echo
  return $RETVAL
}

restart() {
  stop
  start
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  status)
    dostatus
    if [ $? -eq 0 ]; then
      echo $"$AGENT: running"
      RETVAL=0
    else
      echo $"$AGENT: not running"
      RETVAL=1
    fi
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart}"
    RETVAL=2
    ;;
esac

exit $RETVAL
