#!/bin/zsh
zmodload zsh/datetime
setopt extendedglob
: ${SVDIR:=${1:-/run/service}}
export SVDIR
zsvgen --all-up
check_runsv() {
while (($#)); do
[[ -a $1/supervise/control ]] || return $?
shift
done
}
START=$EPOCHREALTIME
services_pre=''
services=( ${SVDIR}/*/run(-*) ); services=( $services:h )
while [[ ${(F)services} != $services_pre ]]; do
while (( $EPOCHREALTIME - $START < 10 )); do
check_runsv $services && break
if (($+commands[inotifywait])); then
inotifywait -r -q -t 1 -e create,move,close_write $services
else
sleep 0.2
fi
done
sv check $services
services_pre="${(F)services}"
services=( ${SVDIR}/*/run(-*) ); services=( $services:h )
done