diff options
Diffstat (limited to 'm4/colored-echo.m4')
-rw-r--r-- | m4/colored-echo.m4 | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/m4/colored-echo.m4 b/m4/colored-echo.m4 new file mode 100644 index 0000000..0a7ae06 --- /dev/null +++ b/m4/colored-echo.m4 @@ -0,0 +1,75 @@ +dnl +dnl Macro to output bold and colored text. +dnl + +dnl COLORED_ECHO_INIT +dnl This macro must be called first to initialize a context. +AC_DEFUN([COLORED_ECHO_INIT], +[ + dnl Prepare fancy console output, taken from GNU shtools. + colored_echo_bold='' + colored_echo_norm='' + + AC_PROG_AWK + if test x"$AWK" = x"not found"; then + return + fi + + case $TERM in + xterm|xterm*|vt220|vt220*) + dnl For the most important terminal types we directly know the + dnl sequences. + colored_echo_bold=`$AWK 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' </dev/null 2>/dev/null` + colored_echo_norm=`$AWK 'BEGIN { printf("%c%c%c", 27, 91, 109); }' </dev/null 2>/dev/null` + ;; + + vt100|vt100*|cygwin) + colored_echo_bold=`$AWK 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' </dev/null 2>/dev/null` + colored_echo_norm=`$AWK 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' </dev/null 2>/dev/null` + ;; + + *) + dnl For all others, we try to use a possibly existing `tput' or + dnl `tcout' utility. + paths=`$ECHO $PATH | sed -e 's/:/ /g'` + for tool in tput tcout; do + for dir in $paths; do + if test -r "$dir/$tool" ; then + for seq in bold md smso; do + bold="`$dir/$tool $seq 2>/dev/null`" + if test ".$bold" != . ; then + colored_echo_bold="$bold" + break + fi + done + if test ".$colored_echo_bold" != . ; then + for seq in sgr0 me rmso init reset; do + norm="`$dir/$tool $seq 2>/dev/null`" + if test ".$norm" != . ; then + colored_echo_norm="$norm" + break + fi + done + fi + break + fi + done + if test x"$colored_echo_bold" != "x" -a x"$colored_echo_norm" != "x"; then + break; + fi + done + ;; + esac +]) + +dnl COLORED_ECHO(TEXT) +dnl Output text with: +dnl o everything between %B and %b displayed bold. +AC_DEFUN([COLORED_ECHO], +[ + text=`$ECHO $seo "$1" | sed -e "s/%B/${colored_echo_bold}/g" -e "s/%b/${colored_echo_norm}/g" 2>/dev/null` + $ECHO $seo "$text" + + text=`$ECHO $sec "$1" | sed -e "s/%B//g" -e "s/%b//g" 2>/dev/null` + _AS_ECHO_LOG($text) +]) |