9a3316b1096382ca965247a415a908377daf0803
[lhc/ateliers.git] / lib / log.sh
1 #!/bin/sh
2
3 export TERM=${TERM:-linux}
4 readonly tput_rev=${nocolor:-$(tput rev)}
5 readonly tput_sgr0=${nocolor:-$(tput sgr0)}
6 readonly tput_bold=${nocolor:-$(tput bold)}
7 readonly tput_setaf_0=${nocolor:-$(tput setaf 0)}
8 readonly tput_setaf_1=${nocolor:-$(tput setaf 1)}
9 readonly tput_setaf_2=${nocolor:-$(tput setaf 2)}
10 readonly tput_setaf_3=${nocolor:-$(tput setaf 3)}
11
12 info () {
13 local -
14 set +x
15 printf >&2 "%sINFO%s" "$tput_setaf_2" "$tput_sgr0"
16 local comment="$1"
17 shift
18 local var
19 for var in "$@"
20 do
21 local val="$(eval printf %s "\"\${$var:-}\"" || false)" || false
22 printf >&2 ": %s%s%s=%s%s%s" "$tput_bold$tput_setaf_0" "$var" "$tput_sgr0" "$tput_bold$tput_setaf_0" "$val" "$tput_sgr0"
23 done
24 printf >&2 ": %s%s%s\n" "$tput_rev" "$comment" "$tput_sgr0"
25 }
26 error () {
27 local -
28 set +x
29 printf >&2 "%sERROR%s" "$tput_setaf_1" "$tput_sgr0"
30 local errno="$1"
31 local comment="$2"
32 shift 2
33 local var
34 for var in "$@"
35 do
36 local val="$(eval printf %s "\"\${$var:-}\"" || false)" || false
37 printf >&2 ": %s%s%s=%s%s%s" "$tput_bold$tput_setaf_0" "$var" "$tput_sgr0" "$tput_bold$tput_setaf_0" "$val" "$tput_sgr0"
38 done
39 printf >&2 ": %s%s%s\n" "$tput_rev" "$comment" "$tput_sgr0"
40 exit $errno
41 }
42 assert () {
43 local -
44 set +x
45 local eval="$1"; shift
46 local type="assertion failure"
47 eval "$eval" ||
48 error $? "$eval" type "$@"
49 }