do
# No further runs unless at least one signal is found.
work=0
- find /org/wanna-build/signals -type f | while read signal
+ find /org/wanna-build/signals -type f | while read signal_file
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
+ signal=$(basename $signal_file)
+ /org/wanna-build/triggers/trigger.${signal/.?*} ${signal/?*./}
+ rm $signal_file
done
done
shift
args="$*"
+args=${args//[^a-zA-Z-]/}
+args=${args,,}
+
+# Ignore ftpsync stuff.
+if [ "$args" = "syncall" -o "$args" = "sync:all" ]
+then
+ args=""
+fi
echo "$(date): $trigger_name | $args" >> /org/wanna-build/db/signal.log
if [ ! -z "$args" ]
then
- # Append because we might get triggered for multiple suites.
- # (This is mainly for security currently.)
- echo $args >> /org/wanna-build/signals/$trigger_name
+ # Pass arguments in the filename because we might get triggered for
+ # multiple suites. A simple append wouldn't be race-free on the
+ # reader side.
+ touch "/org/wanna-build/signals/${trigger_name}.${args}"
else
- touch /org/wanna-build/signals/$trigger_name
+ touch "/org/wanna-build/signals/$trigger_name"
fi
exit 0