Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / scripts / ci / run-step.sh
1 #!/bin/bash -e
2 TIMEOUTCMD=`dirname "${BASH_SOURCE[0]}"`/babysitter
3 if ! ${TIMEOUTCMD} -h >/dev/null 2>&1; then
4     TIMEOUTCMD=timeout  # fall back to timeout if babysitter doesn't work (e.g. python not installed or wrong version)
5 fi
6
7 export MONO_BABYSITTER_LOG_FILE=babysitter_report.json_lines
8
9 helptext ()
10 {
11     echo "run-step.sh {--label=LABEL} {--skip|--timeout=TIMEOUT [--fatal]} command to run with arguments"
12 }
13
14 for i in "$@"
15 do
16 case $i in
17     --help)
18     helptext
19     exit 0
20     ;;
21     --label=*)
22     LABEL="${i#*=}"
23     shift # past argument=value
24     ;;
25     --timeout=*)
26     TIMEOUT="${i#*=}"
27     shift # past argument=value
28     ;;
29     --fatal)
30     FATAL="true"
31     shift # past argument
32     ;;
33     --skip)
34     SKIP="true"
35     shift # past argument
36     ;;
37     *)
38             # unknown option, assume just part of cmdline
39     ;;
40 esac
41 done
42 if [ -n "${SKIP}" ] && [ -z "${LABEL}" ]
43     then helptext
44     exit 1
45 fi
46 if [ -n "${SKIP}" ]
47     then echo -e "*** start: ${LABEL}\n*** end(0): ${LABEL}: \e[45mSkipped\e[0m"
48     exit 0
49 fi
50 if [ -z "${LABEL}" ] || [ -z "${TIMEOUT}" ]
51     then helptext
52     exit 1
53 fi
54 STARTTIME=`date +%s`
55 echo "*** start: ${LABEL}"
56 if [ -n "${FATAL}" ]; then
57     ${TIMEOUTCMD} --signal=ABRT --kill-after=60s ${TIMEOUT} "$@" && echo -e "*** end($(echo $(date +%s) - ${STARTTIME} | bc)): ${LABEL}: \e[42mPassed\e[0m" || (echo -e "*** end($(echo $(date +%s) - ${STARTTIME} | bc)): ${LABEL}: \e[41mFailed\e[0m" && exit 1)
58 else
59     ${TIMEOUTCMD} --signal=ABRT --kill-after=60s ${TIMEOUT} "$@" && echo -e "*** end($(echo $(date +%s) - ${STARTTIME} | bc)): ${LABEL}: \e[42mPassed\e[0m" || echo -e "*** end($(echo $(date +%s) - ${STARTTIME} | bc)): ${LABEL}: \e[43mUnstable\e[0m"
60 fi