On Mon, Sep 09, 2019 at 09:49:41AM +0200, Michal Privoznik wrote: > If we're running from a TTY we can put some colors around 'yes', > 'no' and other messages. > > Shamelessly copied from Ruby source code and modified a bit to > comply with syntax-check. > > https://github.com/ruby/ruby/commit/e4879592873abd4cd8aeed56f4cbaa360a3d3736 Ruby is under the Ruby license terms, which gives a choice of using the 2-clause BSD license instead, which in turn lets you relicense to the GPL, so ok. > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > m4/virt-colours.m4 | 62 ++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 62 insertions(+) > create mode 100644 m4/virt-colours.m4 > > diff --git a/m4/virt-colours.m4 b/m4/virt-colours.m4 > new file mode 100644 > index 0000000000..251778f2ff > --- /dev/null > +++ b/m4/virt-colours.m4 > @@ -0,0 +1,62 @@ > +dnl Colourful configure > +dnl > +dnl Copyright (C) 2015 Nobuyoshi Nakada > +dnl > +dnl This library is free software; you can redistribute it and/or > +dnl modify it under the terms of the GNU Lesser General Public > +dnl License as published by the Free Software Foundation; either > +dnl version 2.1 of the License, or (at your option) any later version. > +dnl > +dnl This library is distributed in the hope that it will be useful, > +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of > +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +dnl Lesser General Public License for more details. > +dnl > +dnl You should have received a copy of the GNU Lesser General Public > +dnl License along with this library. If not, see > +dnl <http://www.gnu.org/licenses/>. > + > +AC_DEFUN([_COLORIZE_RESULT_PREPARE], [ > + msg_checking= msg_result_yes= msg_result_no= msg_result_other= msg_reset= > + AS_IF([test -t 1], [ > + msg_begin="`tput smso 2>/dev/null`" > + AS_CASE(["$msg_begin"], ['@<:@'*m], > + [msg_begin="`echo "$msg_begin" | sed ['s/[0-9]*m$//']`" > + msg_checking="${msg_begin}33m" > + AS_IF([test ${TEST_COLORS:+set}], [ > + msg_result_yes=[`expr ":$TEST_COLORS:" : ".*:pass=\([^:]*\):"`] > + msg_result_no=[`expr ":$TEST_COLORS:" : ".*:fail=\([^:]*\):"`] > + msg_result_other=[`expr ":$TEST_COLORS:" : ".*:skip=\([^:]*\):"`] > + ]) > + msg_result_yes="${msg_begin}${msg_result_yes:-32;1}m" > + msg_result_no="${msg_begin}${msg_result_no:-31;1}m" > + msg_result_other="${msg_begin}${msg_result_other:-33;1}m" > + msg_reset="${msg_begin}m" > + ]) > + AS_UNSET(msg_begin) > + ]) > + AS_REQUIRE_SHELL_FN([colorize_result], > + [AS_FUNCTION_DESCRIBE([colorize_result], [MSG], [Colorize result])], > + [AS_CASE(["$[]1"], > + [yes], [AS_ECHO(["${msg_result_yes}$[]1${msg_reset}]")], > + [no], [AS_ECHO(["${msg_result_no}$[]1${msg_reset}]")], > + [AS_ECHO(["${msg_result_other}$[]1${msg_reset}]")])]) > +]) > + > +AC_DEFUN([COLORIZE_RESULT], [AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl > + AS_LITERAL_IF([$1], > + [m4_case([$1], > + [yes], [AS_ECHO(["${msg_result_yes}$1${msg_reset}"])], > + [no], [AS_ECHO(["${msg_result_no}$1${msg_reset}"])], > + [AS_ECHO(["${msg_result_other}$1${msg_reset}"])])], > + [colorize_result "$1"]) dnl > +]) > + > +AC_DEFUN([AC_CHECKING],[dnl > +AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl > +AS_MESSAGE([checking ${msg_checking}$1${msg_reset}...])]) > + > +AC_DEFUN([AC_MSG_RESULT], [dnl > +{ _AS_ECHO_LOG([result: $1]) > +COLORIZE_RESULT([$1]); dnl > +}]) I can't claim I attempted to understand that. I'm just assuming that since it works for Ruby, its bug-free :-) Clever how they redefine existing autoconf macros AC_CHECKING and AC_MSG_RESULT to make them colourful. Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list