#!/bin/bash -e

if [ -f /etc/default/rabbitmq ]; then
	. /etc/default/rabbitmq
fi

RETVAL=1
USER=${RABBITMQ_USER-rabbitmq}
BIN_FILE=${RABBITMQ_BIN:-/usr/lib/rabbitmq/bin/rabbitmq-server}
PID_FILE=${RABBITMQ_PID:-/var/run/rabbitmq/kazoo-rabbitmq.pid}
CFG_FILE=${RABBITMQ_ENV:-/etc/kazoo/rabbitmq/rabbitmq-env.conf}

while read LINE; do
	export RABBITMQ_$LINE
done < ${CFG_FILE}

if [ -f /etc/sysconfig/rabbitmq ]; then
        . /etc/sysconfig/rabbitmq
fi

export HOME=${RABBITMQ_HOME-/var/lib/rabbitmq}
export RABBITMQ_CONFIG_FILE=/etc/kazoo/rabbitmq/rabbitmq
export RABBITMQ_ENABLED_PLUGINS_FILE=/etc/kazoo/rabbitmq/enabled_plugins
export RABBITMQ_NODENAME=kazoo-rabbitmq

prepare() {
	rm -rf /var/lib/rabbitmq/mnesia/kazoo-rabbit*
	mkdir -p ${HOME}
	chown -R ${USER} ${HOME}
	mkdir -p /var/log/rabbitmq
	chown -R ${USER} /var/log/rabbitmq
	mkdir -p /var/run/rabbitmq
	chown -R ${USER} /var/run/rabbitmq
	if [ -e ${PID_FILE} ]; then
		rm -rf ${PID_FILE}
	fi
        RETVAL=$?
}

start() {
	cd ${HOME}

	if /usr/lib/rabbitmq/bin/rabbitmqctl status > /dev/null 2>&1; then
		echo "RabbitMQ is already running!"
		return
	fi

	set -- ${BIN_FILE} "$@"
	if [ "$(whoami)" == "${USER}" ]; then
		exec "$@"
	else
		runuser -s /bin/bash ${USER} -c "$*"
 	fi
	RETVAL=$?
	
	if [ ${RETVAL} -ne 0 ]; then
		echo "Failed to start RabbitMQ!"
		RETVAL=1
	fi
}

case "$1" in
	prepare)
		prepare
		;;
	background)
		shift
		start "-detached" $@
		;;
	start)
		shift
		start "$@"
		;;
	*)
		exec /usr/lib/rabbitmq/bin/rabbitmqctl $@
		RETVAL=$?
		;;
esac

exit ${RETVAL}
