#!/bin/sh
#
# Author: Per Øyvind Karlsen <peroyvind@mandriva.org>
#
### BEGIN INIT INFO
# Provides: gitorious-poller
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 3 4 5
# Default-Stop: 0 1 6
# Description: Gitorious async queue processor
# Short-Description: Gitorious git processor
### END INIT INFO

. /etc/init.d/functions

EXEC_FILE=poller
NAME="Gitorious ${EXEC_FILE}"
LOCK_FILE=/var/lock/subsys/gitorious-${EXEC_FILE}
PID_FILE=/var/run/gitorious/${EXEC_FILE}0.pid
LOG_FILE=/var/log/gitorious/${EXEC_FILE}.log
PID_PATH=$(dirname ${PID_FILE})

GITORIOUS_SYSCONFIG=/etc/sysconfig/gitorious
[ -r $GITORIOUS_SYSCONFIG ] || exit 6
. $GITORIOUS_SYSCONFIG

GIT_DAEMON_BIN=${GITORIOUS_DIR}/script/${EXEC_FILE}
[ -x $GIT_DAEMON_BIN ] || exit 5

start()
{
	gprintf "Starting %s: " "${NAME}"
	daemon --pidfile=${PID_FILE} --user ${GITORIOUS_USER} "cd ${GITORIOUS_DIR} && PID_PATH=${PID_PATH} RAILS_ENV=${RAILS_ENV} script/${EXEC_FILE} start >> ${LOG_FILE}"
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch ${LOCK_FILE}
	return $RETVAL
}

stop()
{
	gprintf "Shutting down %s: " "${NAME}"
	killproc -p ${PID_FILE}
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f ${LOCK_FILE}
	return $RETVAL
}

restart()
{
	gprintf "Restarting %s: " "${NAME}"
	daemon --user ${GITORIOUS_USER} "cd ${GITORIOUS_DIR} && PID_PATH=${PID_PATH} RAILS_ENV=${RAILS_ENV} script/${EXEC_FILE} restart >> ${LOG_FILE}"
	RETVAL=$?
	echo
	return $RETVAL
}

reload()
{
	gprintf "Reloading %s: " "${NAME}"
	daemon --user ${GITORIOUS_USER} "cd ${GITORIOUS_DIR} && PID_PATH=${PID_PATH} RAILS_ENV=${RAILS_ENV} script/${EXEC_FILE} reload >> ${LOG_FILE}"
	RETVAL=$?
	echo
	return $RETVAL
}


rh_status()
{
	status -p ${PID_FILE} -l $(basename ${LOCK_FILE}) ${EXEC_FILE}
	RETVAL=$?
	return $RETVAL
}

rh_status_q()
{
	return $(rh_status >/dev/null 2>&1)
}

case "$1" in
    start)
	rh_status_q && exit 0
	$1
        ;;
    stop)
	$1
        ;;
    restart)
	restart
        ;;
    reload|force-reload)
	reload
	;;
    condrestart|try-restart)
	rh_status_q || exit 0
	restart
        ;;
    condstop)
	rh_status_q || exit 0  
	stop
	;;	
    status)
	rh_status
        ;;
    *)
        gprintf "Usage: %s {start|stop|status|restart|condrestart|condstop|reload}\n" $0
        RETVAL=2
        ;;
esac
exit $RETVAL

