#!/bin/bash
#===========================================================================#
# Run programm, and dump it output to stdout only if it returns non-zero    #
# useful utility when run something from cron								#
#===========================================================================#
# (C) Denis Smirnov <mithraen@freesource.info>					  Aug 2009  #
#===========================================================================#
T=`mktemp`
trap 'rm -f -- "$T"' EXIT HUP INT QUIT TERM

TITLE=""

IGNORE_RC=0

while getopts "t:i" opt
do
    case $opt in
        t)
            TITLE="$OPTARG"
            ;;
        i)
            IGNORE_RC=1
            ;;
    esac
done

shift $((OPTIND-1))

if [ -z "$1" ]; then
	echo "Use: log-if-exit [i] [-t title] <command> [params]"
	exit -1
fi

PROG=$1; shift

$PROG "$@" >> $T 2>> $T

RC=$?

if [ "$RC" -ne "0" ]; then
        echo "======================================================================"
	[ -z "$TITLE" ] || echo "$TITLE: $RC"
	cat $T
        echo "Exit code: $RC"
fi
rm -f "$T"

[ "$IGNORE_RC" = "1" ] && exit 0
exit $RC
