diff options
Diffstat (limited to 'contrib/rc.d/hyperbot')
-rw-r--r-- | contrib/rc.d/hyperbot | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/contrib/rc.d/hyperbot b/contrib/rc.d/hyperbot new file mode 100644 index 0000000..9ebe5c3 --- /dev/null +++ b/contrib/rc.d/hyperbot @@ -0,0 +1,77 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +# Set the locale +export LANG=${LOCALE:-C} +if [[ -r /etc/locale.conf ]]; then + parse_envfile /etc/locale.conf "${localevars[@]}" +fi + +declare -a pids + +while read -r line +do + pids+=("${line}") +done < <( pgrep -u hyperbot ) + +case $1 in +start) + stat_busy "Starting hyperbot" + + # Check it's not already running. + if ! (( ${#pids[*]} )) + then + su - hyperbot -c "cd /srv/hyperbot ; ./envbot & ./hyperbot_fixer & ./issues_change_detector" & + # If it's not running then we fail. + if ! pgrep hyperbot &>/dev/null + then + stat_fail + exit 1 + fi + + add_daemon hyperbot + stat_done + else + stat_fail + exit 1 + fi + ;; + +stop) + stat_busy "Stopping hyperbot" + + if ! (( ${#pids[*]} )) + then + echo "It's not running" + stat_fail + exit 1 + fi + + for (( i=0 ; i!=${#pids[*]} ; i++ )) + do + kill "${pids[${i}]}" &>/dev/null || + { + stat_fail + exit 1 + } + done + + unset pids + + rm_daemon hyperbot + stat_done + + ;; + +restart) + $0 stop + $0 start + ;; + +*) + echo "Usage: $0 {start|stop|restart}" >&2 + exit 1 + +esac |