mirror of
https://github.com/containers/podman
synced 2024-10-20 17:23:30 +00:00
b9814e76b2
Signed-off-by: Chris Evich <cevich@redhat.com>
40 lines
1 KiB
Bash
Executable file
40 lines
1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# This script executes a command while logging all output to a temporary
|
|
# file. If the command exits non-zero, then all output is sent to the console,
|
|
# before returning the exit code. If the script itself fails, the exit code 121
|
|
# is returned.
|
|
|
|
set -eo pipefail
|
|
|
|
SCRIPT_BASEDIR="$(basename $0)"
|
|
|
|
badusage() {
|
|
echo "Incorrect usage: $SCRIPT_BASEDIR) <command> [options]" > /dev/stderr
|
|
echo "ERROR: $1"
|
|
exit 121
|
|
}
|
|
|
|
COMMAND="$@"
|
|
[[ -n "$COMMAND" ]] || badusage "No command specified"
|
|
|
|
OUTPUT_TMPFILE="$(mktemp -p '' ${SCRIPT_BASEDIR}_output_XXXX)"
|
|
output_on_error() {
|
|
RET=$?
|
|
set +e
|
|
if [[ "$RET" -ne "0" ]]
|
|
then
|
|
echo "---------------------------"
|
|
cat "$OUTPUT_TMPFILE"
|
|
echo "[$(date --iso-8601=second)] <exit $RET> $COMMAND"
|
|
fi
|
|
rm -f "$OUTPUT_TMPFILE"
|
|
}
|
|
trap "output_on_error" EXIT
|
|
|
|
"$@" 2>&1 | while IFS='' read LINE # Preserve leading/trailing whitespace
|
|
do
|
|
# Every stdout and (copied) stderr line
|
|
echo "[$(date --iso-8601=second)] $LINE"
|
|
done >> "$OUTPUT_TMPFILE"
|