]>
Commit | Line | Data |
---|---|---|
d419b75c EV |
1 | # This was borrowed from https://github.com/travis-ci/travis-build/tree/master/lib/travis/build/bash |
2 | # to get around https://github.com/travis-ci/travis-ci/issues/9979. It should probably be removed | |
3 | # as soon as Travis CI has started to provide an easy way to export the functions to bash scripts. | |
4 | ||
5 | travis_jigger() { | |
6 | local cmd_pid="${1}" | |
7 | shift | |
8 | local timeout="${1}" | |
9 | shift | |
10 | local count=0 | |
11 | ||
12 | echo -e "\\n" | |
13 | ||
14 | while [[ "${count}" -lt "${timeout}" ]]; do | |
15 | count="$((count + 1))" | |
16 | echo -ne "Still running (${count} of ${timeout}): ${*}\\r" | |
17 | sleep 60 | |
18 | done | |
19 | ||
20 | echo -e "\\n${ANSI_RED}Timeout (${timeout} minutes) reached. Terminating \"${*}\"${ANSI_RESET}\\n" | |
21 | kill -9 "${cmd_pid}" | |
22 | } | |
23 | ||
24 | travis_wait() { | |
25 | local timeout="${1}" | |
26 | ||
27 | if [[ "${timeout}" =~ ^[0-9]+$ ]]; then | |
28 | shift | |
29 | else | |
30 | timeout=20 | |
31 | fi | |
32 | ||
33 | local cmd=("${@}") | |
34 | local log_file="travis_wait_${$}.log" | |
35 | ||
36 | "${cmd[@]}" &>"${log_file}" & | |
37 | local cmd_pid="${!}" | |
38 | ||
39 | travis_jigger "${!}" "${timeout}" "${cmd[@]}" & | |
40 | local jigger_pid="${!}" | |
41 | local result | |
42 | ||
43 | { | |
b6b35f0e | 44 | set +e |
d419b75c EV |
45 | wait "${cmd_pid}" 2>/dev/null |
46 | result="${?}" | |
47 | ps -p"${jigger_pid}" &>/dev/null && kill "${jigger_pid}" | |
b6b35f0e | 48 | set -e |
d419b75c EV |
49 | } |
50 | ||
51 | if [[ "${result}" -eq 0 ]]; then | |
52 | echo -e "\\n${ANSI_GREEN}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" | |
53 | else | |
54 | echo -e "\\n${ANSI_RED}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" | |
55 | fi | |
56 | ||
57 | echo -e "\\n${ANSI_GREEN}Log:${ANSI_RESET}\\n" | |
58 | cat "${log_file}" | |
59 | ||
60 | return "${result}" | |
61 | } |