diff options
author | Edwin Groothuis <edwin@FreeBSD.org> | 2007-09-08 12:22:49 +0000 |
---|---|---|
committer | Edwin Groothuis <edwin@FreeBSD.org> | 2007-09-08 12:22:49 +0000 |
commit | 871cceef274291ec9803810fa6d0fb8b0f92c94d (patch) | |
tree | 6138d7fac24bed61fecd68b369c6456d67b884ee /databases/slony1/files | |
parent | 0e9c58155a44714db8999ca0e5f676a6576ab55a (diff) |
Notes
Diffstat (limited to 'databases/slony1/files')
-rw-r--r-- | databases/slony1/files/slon.sh.in | 110 |
1 files changed, 94 insertions, 16 deletions
diff --git a/databases/slony1/files/slon.sh.in b/databases/slony1/files/slon.sh.in index 6f2ee3c82feb..9e7588e14b18 100644 --- a/databases/slony1/files/slon.sh.in +++ b/databases/slony1/files/slon.sh.in @@ -1,30 +1,108 @@ #!/bin/sh # # $FreeBSD$ +# Modified by Brian A. Seklecki <bseklecki@collaborativefusion.com> +# <lavalamp@spiritual-machines.org> +# $Id$ # -# PROVIDE: %%NAME%% +# sed -e 's/%%PREFIX%%/\/usr\/local/g' < slon.in > slon + +# PROVIDE: slon # REQUIRE: postgresql # KEYWORD: shutdown -# Add the following line to /etc/rc.conf to enable `%%NAME%%': -# -#%%NAME%%_enable="YES" -# -# and be sure to configure %%PREFIX%%/etc/%%NAME%%.conf - -. "%%RC_SUBR%%" +. "/etc/rc.subr" -name="%%NAME%%" +name="slon" rcvar=`set_rcvar` -pidfile="/var/run/$name.pid" -command="%%PREFIX%%/bin/slon" -command_args="-f %%PREFIX%%/etc/$name.conf -p $pidfile &" -required_files="%%PREFIX%%/etc/$name.conf" - -# read configuration and set defaults load_rc_config "$name" -: ${%%NAME%%_enable="NO"} +_pidprefix="/var/run/${name}" +pidfile="${_pidprefix}.pid" # Used as fall-through in event of no profiles + +# From global rc.conf(5); if unset, set them here +[ -z "$slon_enable" ] && slon_enable="NO" +[ -z "$slon_profiles" ] && slon_profiles="" + +configfile_path="/usr/local/etc/${name}.conf" +command_args="-f ${configfile_path} -p ${pidfile} &" +required_files="${configfile_path}" + +command="/usr/local/bin/slon" + +isProfile() { + match=0; + for curMember in $slon_profiles; do + if [ "$curMember" = "$1" ]; then + #echo "DEBUG: Match" + match=1 + fi + done + return $match; +} + + + +if [ -n "$2" ]; then + profile="$2" # A profile argument has been given (presumably) + if [ "x${slon_profiles}" != "x" ]; then # This checks that profiles are indeed defined + echo "-- Profile: $profile --" + # Now let's check to make sure that both the profile, the profile's config path variable, config file exists + configfile_default_path="/usr/local/etc/${name}-${profile}.conf" + configfile_override_varname="\$${name}_${profile}_configfile" # Basic string substitution gets variable name + configfile_override_varname_nop="${name}_${profile}_configfile" # Basic string substitution gets variable name + #echo "DEBUG default path: $configfile_default_path" + #echo "DEBUG override variable name: $configfile_override_varname"; + #echo "DEBUG override variable name noprefix: $configfile_override_varname_nop"; + eval configfile_path=\${$configfile_override_varname_nop:-${configfile_default_path}} # e.g., $configfile_varname="$slon_sex_configfile" + #echo "DEBUG final: $configfile_path"; + isProfile $profile + searchForProfile=$? + # testing for true + if [ ! -r "$configfile_path" -o $searchForProfile -lt 1 ]; then + echo "$0: no such profile defined, profile config file defined, or cant read profile config file!"; + exit 1; + fi + required_files=${configfile_path} + + pidfile_default="${_pidprefix}-${profile}.pid" + eval pidfile=\${${name}_${profile}_pidfile:-${pidfile_default}} + + command_args="-f ${configfile_path} -p ${pidfile} &" + #echo "DEBUG argspre: $command_args" + #echo "DEBUG subst: ${name}_${profile}_flags" + #eval echo "DEBUG subst: \$${name}_${profile}_flags" + #eval echo "DEBUG subst2: command_args=\${${name}_${profile}_flags:-${command_args}}" + eval command_args=\${${name}_${profile}_flags:-${command_args}} + #echo "DEBUG args: $command_args" + else + echo "$0: extra profile argument ignored, no profiles defined" + fi + + +else + # We get to here if $2 is not defined at command line, but we do have profiles + # so apply $1 command to all profiles! + # This block uses recursion to call ourself with each-profile defined as $2 + if [ "x${slon_profiles}" != "x" -a "x$1" != "x" ]; then + if [ "x$1" != "xrestart" ]; then + for profile in ${slon_profiles}; do + echo "===> ${name} profile: ${profile}" + /usr/local/etc/rc.d/${name} $1 ${profile} + retcode="$?" + if [ "0${retcode}" -ne 0 ]; then + failed="${profile} (${retcode}) ${failed:-}" + else + success="${profile} ${success:-}" + fi + done + exit 0 + else + restart_precmd="" + fi + fi +# else = no profile argument given +fi run_rc_command "$1" |