summaryrefslogtreecommitdiff
path: root/contrib/cirrus/ooe.sh
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2018-10-05 06:15:28 -0700
committerGitHub <noreply@github.com>2018-10-05 06:15:28 -0700
commita4a6f7dac2364fc4215a9b0b12d54fccac623903 (patch)
treed870d7352ebcc82e953e96514a7c19448cf65f10 /contrib/cirrus/ooe.sh
parent094b8b73505cb084d632ebb08e2a014e68f5e1b1 (diff)
parentc53163b75a698af3d3bd5305efb2610f4bb7880b (diff)
downloadpodman-a4a6f7dac2364fc4215a9b0b12d54fccac623903.tar.gz
podman-a4a6f7dac2364fc4215a9b0b12d54fccac623903.tar.bz2
podman-a4a6f7dac2364fc4215a9b0b12d54fccac623903.zip
Merge pull request #1518 from cevich/cirrus-ci
Add cirrus-ci: eventual replacement for papr and travis
Diffstat (limited to 'contrib/cirrus/ooe.sh')
-rwxr-xr-xcontrib/cirrus/ooe.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/cirrus/ooe.sh b/contrib/cirrus/ooe.sh
new file mode 100755
index 000000000..d79e574b2
--- /dev/null
+++ b/contrib/cirrus/ooe.sh
@@ -0,0 +1,39 @@
+#!/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_PATH="$0"
+
+badusage() {
+ echo "Incorrect usage: $(basename $SCRIPT_PATH) <command> [options]" > /dev/stderr
+ echo "ERROR: $1"
+ exit 121
+}
+
+COMMAND="$@"
+[[ -n "$COMMAND" ]] || badusage "No command specified"
+
+OUTPUT_TMPFILE="$(mktemp -p '' $(basename $0)_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"