Ajout : warn() .
[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 warn () {
27 local -
28 set +x
29 printf >&2 "%sWARNING%s" "$tput_setaf_3" "$tput_sgr0"
30 local comment="$1"
31 shift
32 local var
33 for var in "$@"
34 do
35 local val="$(eval printf %s "\"\${$var:-}\"" || false)" || false
36 printf >&2 ": %s%s%s=%s%s%s" "$tput_bold$tput_setaf_0" "$var" "$tput_sgr0" "$tput_bold$tput_setaf_0" "$val" "$tput_sgr0"
37 done
38 printf >&2 ": %s%s%s" "$tput_rev" "$comment" "$tput_sgr0"
39 local x
40 if ! [ ${WARNING_CONTINUE:+set} ]
41 then
42 printf >&2 " (press Enter to continue)"
43 read x
44 else
45 printf >&2 "\n"
46 fi
47 }
48 error () {
49 local -
50 set +x
51 printf >&2 "%sERROR%s" "$tput_setaf_1" "$tput_sgr0"
52 local errno="$1"
53 local comment="$2"
54 shift 2
55 local var
56 for var in "$@"
57 do
58 local val="$(eval printf %s "\"\${$var:-}\"" || false)" || false
59 printf >&2 ": %s%s%s=%s%s%s" "$tput_bold$tput_setaf_0" "$var" "$tput_sgr0" "$tput_bold$tput_setaf_0" "$val" "$tput_sgr0"
60 done
61 printf >&2 ": %s%s%s\n" "$tput_rev" "$comment" "$tput_sgr0"
62 exit $errno
63 }
64 assert () {
65 local -
66 set +x
67 local eval="$1"; shift
68 local type="assertion failure"
69 eval "$eval" ||
70 error $? "$eval" type "$@"
71 }