#!/bin/bash

# Copyright (C) 2008, 2009 Free Software Foundation, Inc.

# This file is part of GNUnited Nations.

# GNUnited Nations is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.

# GNUnited Nations is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with GNUnited Nations.  If not, see <http://www.gnu.org/licenses/>.

# Usage:
#
# ./mailfail [--dry-run] RCPT SUBJECT CMD [ARG ...]
#
# Example:
#
# ./mailfail kaloian@doganov.org "Invalid XHTML" ./validate article.html

function usage() {
    echo 1>&2 Usage: ./mailfail [--dry-run] RCPT SUBJECT CMD [ARG ...]
    exit 1
}

[ $# -gt 0 ] || usage

# Read arguments
DRY_RUN=""
if [ "$1" == "--dry-run" ]; then
    [ $# -ge 4 ] || usage
    DRY_RUN="yes"
    RCPT="$2"
    SUBJECT="$3"
    shift 3
else
    [ $# -ge 3 ] || usage
    RCPT="$1"
    SUBJECT="$2"
    shift 2
fi

# Create tempfile and mark it for deletion on exit.
TMP=`mktemp -t gnun.mailfail.XXXXXX`
trap "rm -f $TMP" EXIT

# Execute the command and capture it's output
"$@" &>"$TMP"
CMDSTATUS=$?
cat "$TMP"

# Mail the captured output, if needed
if [ -z "$DRY_RUN" ] && [ "$CMDSTATUS" -ne 0 ]; then
    mail "$RCPT" --subj "$SUBJECT" < "$TMP"
fi

# Exit with command's original exit status.
exit $CMDSTATUS
