@@ -5,106 +5,137 @@ set -u
55
66run () {
77 cmd=" ${1} "
8- to_stderr=0
8+ to_stdout=0
9+ cmd_to_stderr=0
910
10- # Output to stderr instead?
11- if [ " ${# } " -eq " 2" ]; then
12- to_stderr=" ${2} "
11+ # Output to stdout instead?
12+ if [ " ${# } " -gt " 1" ]; then
13+ to_stdout=" ${2} "
14+ fi
15+
16+ # Command output to stderr as well
17+ if [ " ${# } " -gt " 2" ]; then
18+ cmd_to_stderr=" ${3} "
1319 fi
1420
1521 red=" \033[0;31m"
1622 green=" \033[0;32m"
1723 yellow=" \033[0;33m"
1824 reset=" \033[0m"
1925
20- if [ " ${to_stderr} " -eq " 0" ]; then
21- printf " ${yellow} [%s] ${red} %s \$ ${green}${cmd}${reset} \n" " $( hostname) " " $( whoami) "
22- else
26+ if [ " ${to_stdout} " -eq " 0" ]; then
2327 printf " ${yellow} [%s] ${red} %s \$ ${green}${cmd}${reset} \n" " $( hostname) " " $( whoami) " >&2
28+ else
29+ printf " ${yellow} [%s] ${red} %s \$ ${green}${cmd}${reset} \n" " $( hostname) " " $( whoami) "
2430 fi
2531
26- if sh -c " LANG=C LC_ALL=C ${cmd} " ; then
27- if [ " ${to_stderr} " -eq " 0" ]; then
28- printf " ${green} [%s]${reset} \n" " OK"
29- else
32+ if OUT=" $( bash -c " set -eu && set -o pipefail && LANG=C LC_ALL=C ${cmd} " ) " ; then
33+ # Output command
34+ if [ -n " ${OUT} " ]; then
35+ echo " ${OUT} "
36+ if [ " ${cmd_to_stderr} " = " 1" ]; then
37+ >&2 echo " ${OUT} "
38+ fi
39+ fi
40+ # Output exit code
41+ if [ " ${to_stdout} " -eq " 0" ]; then
3042 printf " ${green} [%s]${reset} \n" " OK" >&2
43+ else
44+ printf " ${green} [%s]${reset} \n" " OK"
3145 fi
3246 return 0
3347 else
34- if [ " ${to_stderr} " -eq " 0" ]; then
35- printf " ${red} [%s]${reset} \n" " NO"
36- else
48+ # Output command
49+ if [ -n " ${OUT} " ]; then
50+ echo " ${OUT} "
51+ if [ " ${cmd_to_stderr} " = " 1" ]; then
52+ >&2 echo " ${OUT} "
53+ fi
54+ fi
55+ # Output exit code
56+ if [ " ${to_stdout} " -eq " 0" ]; then
3757 printf " ${red} [%s]${reset} \n" " NO" >&2
58+ else
59+ printf " ${red} [%s]${reset} \n" " NO"
3860 fi
3961 return 1
4062 fi
4163}
4264
4365run_fail () {
4466 cmd=" ${1} "
45- to_stderr =0
67+ to_stdout =0
4668
47- # Output to stderr instead?
69+ # Output to stdout instead?
4870 if [ " ${# } " -eq " 2" ]; then
49- to_stderr =" ${2} "
71+ to_stdout =" ${2} "
5072 fi
5173
5274 red=" \033[0;31m"
5375 green=" \033[0;32m"
5476 yellow=" \033[0;33m"
5577 reset=" \033[0m"
5678
57- if [ " ${to_stderr} " -eq " 0" ]; then
58- printf " ${yellow} [%s] ${red} %s \$ ${yellow} [NOT] ${green}${cmd}${reset} \n" " $( hostname) " " $( whoami) "
59- else
79+ if [ " ${to_stdout} " -eq " 0" ]; then
6080 printf " ${yellow} [%s] ${red} %s \$ ${yellow} [NOT] ${green}${cmd}${reset} \n" " $( hostname) " " $( whoami) " >&2
81+ else
82+ printf " ${yellow} [%s] ${red} %s \$ ${yellow} [NOT] ${green}${cmd}${reset} \n" " $( hostname) " " $( whoami) "
6183 fi
6284
6385 if ! sh -c " LANG=C LC_ALL=C ${cmd} " ; then
64- if [ " ${to_stderr} " -eq " 0" ]; then
65- printf " ${green} [%s]${reset} \n" " OK"
66- else
86+ if [ " ${to_stdout} " -eq " 0" ]; then
6787 printf " ${green} [%s]${reset} \n" " OK" >&2
88+ else
89+ printf " ${green} [%s]${reset} \n" " OK"
6890 fi
6991 return 0
7092 else
71- if [ " ${to_stderr} " -eq " 0" ]; then
72- printf " ${red} [%s]${reset} \n" " NO"
73- else
93+ if [ " ${to_stdout} " -eq " 0" ]; then
7494 printf " ${red} [%s]${reset} \n" " NO" >&2
95+ else
96+ printf " ${red} [%s]${reset} \n" " NO"
7597 fi
7698 return 1
7799 fi
78100}
79101
80102sanity_check () {
81103 _name=" ${1} "
104+ _file=" ${2:- } "
82105
83106 if ! run " docker ps | grep '${_name} '" ; then
84107 docker ps
85108 docker logs " ${_name} " || true
86109 docker stop " ${_name} " || true
87- exit 1
110+ return 1
88111 fi
89112
90113 # Test if docker logs works
91- if ! run " docker logs ${_name} >/dev/null 2>&1" ; then
92- docker logs " ${_name} " || true
114+ if ! run " docker logs ${_name} " ; then
93115 docker stop " ${_name} " || true
94- exit 1
116+ return 1
95117 fi
96118
97119 # Ensure no error string was found
98120 if ! run_fail " docker logs ${_name} 2>&1 | grep -E '\[ERR\]'" ; then
99121 docker logs " ${_name} " || true
100122 docker stop " ${_name} " || true
101- exit 1
123+ return 1
102124 fi
103125
104126 # Ensure no warning string was found
105127 if ! run_fail " docker logs ${_name} 2>&1 | grep -E '\[WARN\]'" ; then
106128 docker logs " ${_name} " || true
107129 docker stop " ${_name} " || true
108- exit 1
130+ return 1
109131 fi
110132}
133+
134+
135+ docker_stop () {
136+ _name=" ${1} "
137+
138+ run " docker stop ${_name} " || true
139+ run " docker kill ${_name} >/dev/null 2>&1 || true" > /dev/null 2>&1
140+ run " sleep 2"
141+ }
0 commit comments