Ajout : warn() .
[lhc/ateliers.git] / lib / log.sh
index af89e5b..e302960 100644 (file)
@@ -1,39 +1,71 @@
 #!/bin/sh
 
 export TERM=${TERM:-linux}
-tput_rev=${nocolor:-$(tput rev)}
-tput_sgr0=${nocolor:-$(tput sgr0)}
-tput_bold=${nocolor:-$(tput bold)}
-tput_setaf_0=${nocolor:-$(tput setaf 0)}
-tput_setaf_2=${nocolor:-$(tput setaf 2)}
+readonly tput_rev=${nocolor:-$(tput rev)}
+readonly tput_sgr0=${nocolor:-$(tput sgr0)}
+readonly tput_bold=${nocolor:-$(tput bold)}
+readonly tput_setaf_0=${nocolor:-$(tput setaf 0)}
+readonly tput_setaf_1=${nocolor:-$(tput setaf 1)}
+readonly tput_setaf_2=${nocolor:-$(tput setaf 2)}
+readonly tput_setaf_3=${nocolor:-$(tput setaf 3)}
 
 info () {
-       set=$(set +o | grep '^set .o xtrace$')
+       local -
        set +x
        printf >&2 "%sINFO%s" "$tput_setaf_2" "$tput_sgr0"
-       comment=$1
+       local comment="$1"
        shift
+       local var
        for var in "$@"
         do
-               val=$(eval printf %s "\"\${$var:-}\"" || false) || false
+               local val="$(eval printf %s "\"\${$var:-}\"" || false)" || false
                printf >&2 ": %s%s%s=%s%s%s" "$tput_bold$tput_setaf_0" "$var" "$tput_sgr0" "$tput_bold$tput_setaf_0" "$val" "$tput_sgr0"
         done
        printf >&2 ": %s%s%s\n" "$tput_rev" "$comment" "$tput_sgr0"
-       $set
+ }
+warn () {
+       local -
+       set +x
+       printf >&2 "%sWARNING%s" "$tput_setaf_3" "$tput_sgr0"
+       local comment="$1"
+       shift
+       local var
+       for var in "$@"
+        do
+               local val="$(eval printf %s "\"\${$var:-}\"" || false)" || false
+               printf >&2 ": %s%s%s=%s%s%s" "$tput_bold$tput_setaf_0" "$var" "$tput_sgr0" "$tput_bold$tput_setaf_0" "$val" "$tput_sgr0"
+        done
+       printf >&2 ": %s%s%s" "$tput_rev" "$comment" "$tput_sgr0"
+       local x
+       if ! [ ${WARNING_CONTINUE:+set} ]
+        then
+               printf >&2 " (press Enter to continue)"
+               read x
+        else
+               printf >&2 "\n"
+        fi
  }
 error () {
-       set=$(set +o | grep '^set .o xtrace$')
+       local -
        set +x
-       printf >&2 "%sERROR%s" "$tput_setaf_2" "$tput_sgr0"
-       errno=$1
-       comment=$2
+       printf >&2 "%sERROR%s" "$tput_setaf_1" "$tput_sgr0"
+       local errno="$1"
+       local comment="$2"
        shift 2
+       local var
        for var in "$@"
         do
-               val=$(eval printf %s "\"\${$var:-}\"" || false) || false
+               local val="$(eval printf %s "\"\${$var:-}\"" || false)" || false
                printf >&2 ": %s%s%s=%s%s%s" "$tput_bold$tput_setaf_0" "$var" "$tput_sgr0" "$tput_bold$tput_setaf_0" "$val" "$tput_sgr0"
         done
        printf >&2 ": %s%s%s\n" "$tput_rev" "$comment" "$tput_sgr0"
-       $set
-       exit $1
+       exit $errno
+ }
+assert () {
+       local -
+       set +x
+       local eval="$1"; shift
+       local type="assertion failure"
+       eval "$eval" ||
+       error $? "$eval" type "$@"
  }