#!/bin/bash
#
# chkconfig: 2345 99 01
# description: pgcheck

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

PIDDIR="/var/run/pgcheck"
PIDFILE="${PIDDIR}/pgcheck.pid"
if [ ! -d ${PIDDIR} ]; then
    mkdir -p ${PIDDIR}
    chown postgres:postgres ${PIDDIR}
fi

start() {
    if status >/dev/null 2>&1
    then
        echo "Already running"
        return 0
    else
        echo -n "Starting pgcheck: "
        su - postgres -c pgcheck
        sleep 1
        if status >/dev/null 2>&1
        then
            echo "OK."
            return 0
        else
            echo "FAIL"
            return 1
        fi
    fi
}

stop() {
    if ! status >/dev/null 2>&1
    then
        echo "Already stopped"
        return 0
    else
        echo -n "Stopping pgcheck: "
        kill "$(cat "$PIDFILE")"
        sleep 1
        echo "OK."
        return 0
    fi
}

status() {
    echo -n "Pgcheck is "
    if [ -f "$PIDFILE" ]
    then
        if kill -0 "$(cat "$PIDFILE")"
        then
            echo "running (with pid $(cat $PIDFILE))"
            return 0
        else
            echo "not running"
            return 1
        fi
    else
        echo "not running"
        return 1
    fi
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop && start
    ;;
  status)
    status
    ;;
  *)
    echo "$(basename "$0") {start|stop|status|restart}"
    exit 1
esac
exit $?
