about summary refs log tree commit diff
path: root/contrib/palaver
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-08-11 10:57:00 -0400
committerJune McEnroe <june@causal.agency>2020-08-11 14:59:14 -0400
commit0d69b6e5d64c565442abd03485f62a31f2e8dbd7 (patch)
tree4b0ec3ca7fef446fbbf3bbf18eb8b1c1afcd310b /contrib/palaver
parentcontrib/palaver: Implement command and notifications (diff)
downloadpounce-0d69b6e5d64c565442abd03485f62a31f2e8dbd7.tar.gz
pounce-0d69b6e5d64c565442abd03485f62a31f2e8dbd7.zip
contrib/palaver: Add install target and rc script
Diffstat (limited to 'contrib/palaver')
-rw-r--r--contrib/palaver/.gitignore1
-rw-r--r--contrib/palaver/Makefile27
-rw-r--r--contrib/palaver/rc.d/pounce_palaver.in51
3 files changed, 78 insertions, 1 deletions
diff --git a/contrib/palaver/.gitignore b/contrib/palaver/.gitignore
index d92ce2e..0644d94 100644
--- a/contrib/palaver/.gitignore
+++ b/contrib/palaver/.gitignore
@@ -1,3 +1,4 @@
 *.o
 config.mk
 pounce-palaver
+rc.d/pounce_palaver
diff --git a/contrib/palaver/Makefile b/contrib/palaver/Makefile
index 5810ce2..3321ac4 100644
--- a/contrib/palaver/Makefile
+++ b/contrib/palaver/Makefile
@@ -1,3 +1,7 @@
+PREFIX ?= /usr/local
+MANDIR ?= ${PREFIX}/share/man
+ETCDIR ?= ${PREFIX}/etc
+
 CFLAGS += -std=c11 -Wall -Wextra -Wpedantic
 LDLIBS = -lcurl -lsqlite3 -ltls
 
@@ -5,8 +9,29 @@ LDLIBS = -lcurl -lsqlite3 -ltls
 
 OBJS = notify.o
 
+all: pounce-palaver
+
 pounce-palaver: ${OBJS}
 	${CC} ${LDFLAGS} ${OBJS} ${LDLIBS} -o $@
 
+.SUFFIXES: .in
+
+.in:
+	sed -e 's|%%PREFIX%%|${PREFIX}|g' $< > $@
+
 clean:
-	rm -f pounce-palaver ${OBJS}
+	rm -f ${OBJS} pounce-palaver rc.d/pounce_palaver
+
+install: pounce-palaver pounce-palaver.1 ${INSTALLS}
+	install -d ${DESTDIR}${PREFIX}/bin ${DESTDIR}${MANDIR}/man1
+	install pounce-palaver ${DESTDIR}${PREFIX}/bin
+	install -m 644 pounce-palaver.1 ${DESTDIR}${MANDIR}/man1
+
+install-rcs: rc.d/pounce_palaver
+	install -d ${DESTDIR}${ETCDIR}/rc.d
+	install rc.d/pounce_palaver ${DESTDIR}${ETCDIR}/rc.d
+
+uninstall:
+	rm -f ${DESTDIR}${PREFIX}/bin/pounce-palaver
+	rm -f ${DESTDIR}${MANDIR}/man1/pounce-palaver.1
+	rm -f ${DESTDIR}${ETCDIR}/rc.d/pounce_palaver
diff --git a/contrib/palaver/rc.d/pounce_palaver.in b/contrib/palaver/rc.d/pounce_palaver.in
new file mode 100644
index 0000000..f97e3e7
--- /dev/null
+++ b/contrib/palaver/rc.d/pounce_palaver.in
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+# PROVIDE: pounce_palaver
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name='pounce_palaver'
+rcvar='pounce_palaver_enable'
+
+load_rc_config "${name}"
+
+: ${pounce_palaver_enable:='NO'}
+
+command='/usr/sbin/daemon'
+pidprefix="/var/run/${name}"
+pidfile="${pidprefix}.pid"
+
+child_command='%%PREFIX%%/bin/pounce-palaver'
+
+if [ -n "$2" ]; then
+	profile=$2
+	if [ -n "${pounce_palaver_profiles}" ]; then
+		pidfile="${pidprefix}.${profile}.pid"
+		eval pounce_palaver_enable="\${pounce_palaver_${profile}_enable:-${pounce_palaver_enable}}"
+		eval pounce_palaver_flags="\${pounce_palaver_${profile}_flags:-${pounce_palaver_flags}}"
+		eval pounce_palaver_user="\${pounce_palaver_${profile}_user:-${pounce_palaver_user}}"
+		eval pounce_palaver_env="\${pounce_palaver_${profile}_env:-${pounce_palaver_env}}"
+	else
+		echo "$0: extra argument ignored"
+	fi
+else
+	if [ -n "${pounce_palaver_profiles}" -a -n "$1" ]; then
+		for profile in ${pounce_palaver_profiles}; do
+			echo "===> ${name} profile: ${profile}"
+			%%PREFIX%%/etc/rc.d/${name} "$1" "${profile}" || exit "$?"
+		done
+		exit
+	fi
+fi
+
+child_flags=$pounce_palaver_flags
+child_user=$pounce_palaver_user
+unset pounce_palaver_flags pounce_palaver_user
+command_args="\
+	-r -P ${pidfile} -T ${name}${profile:+/${profile}} \
+	${child_user:+-u ${child_user}} \
+	-- ${child_command} ${child_flags}"
+
+run_rc_command "$1"