#!/bin/sh

# PROVIDE: beanstalkd
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to run beanstalkd:
#
# beanstalkd_enable (bool):	Set it to "YES" to enable beanstalkd.
#				Default is "NO".
# beanstalkd_flags (flags):	Set extra flags here. More options in beanstalkd(1)
#				Default is empty "".
# beanstalkd_user (user):	Set user to run beanstalkd.
#				Default is "nobody".
# beanstalkd_profiles (str):     Set to "" by default.
#                               Define your profiles here.

. /etc/rc.subr

name="beanstalkd"
rcvar=beanstalkd_enable

_piddir="/var/run/beanstalkd"
pidfile="${_piddir}/beanstalkd.pid"

load_rc_config ${name}

if [ -n "$2" ]; then
	profile="$2"
	if [ -n "${beanstalkd_profiles}" ]; then
		pidfile="${_piddir}/beanstalkd.${profile}.pid"
		eval beanstalkd_enable="\${beanstalkd_${profile}_enable:-${beanstalkd_enable}}"
		eval beanstalkd_flags="\${beanstalkd_${profile}_flags:-${beanstalkd_flags}}"
	else
		echo "%%PREFIX%%/etc/rc.d/beanstalkd%%RC_SUBR_SUFFIX%%: extra argument ignored"
	fi
else
	if [ -n "${beanstalkd_profiles}" -a -n "$1" ]; then
		for profile in ${beanstalkd_profiles}; do
			eval _enable="\${beanstalkd_${profile}_enable}"
			case "${_enable:-${beanstalkd_enable}}" in
			[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
				continue
				;;
			[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
				;;
			*)
				if test -z "$_enable"; then
					_var=beanstalkd_enable
				else
					_var=beanstalkd_"${profile}"_enable
				fi
				warn "Bad value" \
				    "'${_enable:-${beanstalkd_enable}}'" \
				    "for ${_var}. " \
				    "Profile ${profile} skipped."
				continue
				;;
			esac
			echo "===> beanstalkd profile: ${profile}"
			if %%PREFIX%%/etc/rc.d/beanstalkd%%RC_SUBR_SUFFIX%% $1 ${profile} ; then
				success="${profile} ${success:-}"
			else
				failed="${profile} (${retcode}) ${failed:-}"
			fi
		done
		exit 0
	fi
fi

beanstalkd_poststop()
{
	if [ -n "${profile}" ]; then
		[ -e "$pidfile" ] && unlink $pidfile
	else
		local file

		for file in ${_piddir}/* ; do
			case "$file" in
			*\*)
				continue ;;
			esac
			unlink $file
		done
	fi
}

beanstalkd_prestart()
{
	install -d -o $beanstalkd_user -g $beanstalkd_user -m 755 $_piddir
}

: ${beanstalkd_enable="NO"}
: ${beanstalkd_user="nobody"}

procname=%%PREFIX%%/bin/beanstalkd
command="/usr/sbin/daemon"
command_args="-p ${pidfile} ${procname} ${beanstalkd_flags}"
unset beanstalkd_flags

start_precmd="${name}_prestart"
stop_postcmd="${name}_poststop"

run_rc_command "$1"
