#!/bin/bash # vim:set et ts=4 sw=4: LOCKFILE=/org/wanna-build/triggers/lock set -eE cleanup() { rm -rf "$LOCKFILE" } if ! lockfile -0 -r0 "$LOCKFILE" 2>/dev/null then # Process already running. exit 0 fi # Got the lock. trap cleanup ERR TERM HUP INT QUIT EXIT # Do at least one run. work=1 while [ $work -eq 1 ] do # No further runs unless at least one signal is found. work=0 find /org/wanna-build/signals -type f | while read signal do # Process it. work=1 if [ "$(stat -c '%s' $signal)" -eq 0 ] then /org/wanna-build/triggers/trigger.$(basename $signal) else cat $signal | \ (while read args do /org/wanna-build/triggers/trigger.$(basename $signal) $args done) fi rm $signal done done exit 0