-#!/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
- printf >&2 ": %s%s%s=%s%s%s" "$tput_bold$tput_setaf_0" "$var" "$tput_sgr0" "$tput_bold$tput_setaf_0" "$val" "$tput_sgr0"
+ 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_rev" "$val" "$tput_sgr0"
done
printf >&2 ": %s%s%s\n" "$tput_rev" "$comment" "$tput_sgr0"
- $set
}
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 "$@"
}