summaryrefslogtreecommitdiffstats
path: root/docker/buildbot_step
diff options
context:
space:
mode:
Diffstat (limited to 'docker/buildbot_step')
-rw-r--r--docker/buildbot_step62
1 files changed, 62 insertions, 0 deletions
diff --git a/docker/buildbot_step b/docker/buildbot_step
new file mode 100644
index 000000000..0820fa016
--- /dev/null
+++ b/docker/buildbot_step
@@ -0,0 +1,62 @@
+#! /bin/bash -e
+
+buildbot_step_help() {
+ echo "Run a command and wrap it in buildbot step format"
+ echo " $0 - <buildbot step> [bash args...]"
+}
+
+bb_time() {
+ # Parser dies if this is longer then 6 chars long.
+ nano=$(date +%N | cut -c1-6)
+ echo "$(date '+%Y-%m-%d %H:%M:%S.')$nano"
+}
+
+bb_echo() {
+ echo "========= $1 ========="
+}
+
+bb_line() {
+ local type=$1 # Finished/Started
+ local step=$2 # Name of step
+ local code=$3 # Exit code
+ local duration=$4 # Elapsed time in seconds
+ local time=$(bb_time)
+
+ bb_echo "$type $step (results: $code, elapsed: $duration secs) (at $time)"
+}
+
+# Intentionally the full name of this executable so sourcing this file also
+# works as expected...
+buildbot_step() {
+ local step=$1
+ local command=${@:2}
+ local start_time=$(date +%s)
+ local exit_code=0
+
+ bb_line "Started" "$step" 0 0
+ if eval "$command";
+ then
+ exit_code=$?
+ else
+ exit_code=$?
+ fi
+
+ local end_time=$(date +%s)
+ local duration=$(($end_time-$start_time))
+
+ bb_line "Finished" "$step" $exit_code $duration
+ return $exit_code
+}
+
+
+# When this script is not being sourced invoke command directly.
+if [ "$(basename $0)" == "buildbot_step" ];
+then
+ if [ $# -lt 2 ];
+ then
+ buildbot_step_help
+ exit 1
+ fi
+ buildbot_step "$@"
+ exit $?
+fi