2b78e2e20b
Add support of multiply profiles (idea obtained from memcached port).
106 lines
2.5 KiB
Bash
106 lines
2.5 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
# 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"
|