#!/bin/bash
# Run a command, suppressing output unless it hangs or crashes.

TMPFILE=`mktemp`
PID=$$

# Print output to avoid travis killing us
watchdog() {
    for i in `seq 5 5 120`; do
        sleep 300
        echo "This command has been running for more than $i minutes..."
    done
    echo "Command timed out after 2h, dumping logs:"
    cat $TMPFILE
    echo "TIMED OUT"
    kill -SIGKILL $PID
}

watchdog & 2>/dev/null
WATCHDOG_PID=$!

time "$@" >$TMPFILE 2>&1

CODE=$?
if [ $CODE != 0 ]; then
    tail -n 2000 $TMPFILE
    echo "FAILED $CODE"
    kill $WATCHDOG_PID
    exit $CODE
fi

kill $WATCHDOG_PID
exit 0