Re: [libvirt] [PATCH 3/4] configure: Colorize output

2019-09-12 Thread Daniel P . Berrangé
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 
> ---
>  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 00..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 .
> +
> +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é 


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@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

[libvirt] [PATCH 3/4] configure: Colorize output

2019-09-09 Thread Michal Privoznik
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

Signed-off-by: Michal Privoznik 
---
 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 00..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 .
+
+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
+}])
-- 
2.21.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list