aboutsummaryrefslogtreecommitdiff
path: root/databases/slony1/files
diff options
context:
space:
mode:
authorEdwin Groothuis <edwin@FreeBSD.org>2007-09-08 12:22:49 +0000
committerEdwin Groothuis <edwin@FreeBSD.org>2007-09-08 12:22:49 +0000
commit871cceef274291ec9803810fa6d0fb8b0f92c94d (patch)
tree6138d7fac24bed61fecd68b369c6456d67b884ee /databases/slony1/files
parent0e9c58155a44714db8999ca0e5f676a6576ab55a (diff)
Notes
Diffstat (limited to 'databases/slony1/files')
-rw-r--r--databases/slony1/files/slon.sh.in110
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"