From: Douglas Bagnall Date: Thu, 19 Apr 2018 02:15:25 +0000 (+1200) Subject: sambatool: heuristics to decided whether colour is wanted X-Git-Tag: tevent-0.9.37~449 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8426c428ba2e7cc880392d6cf0e4bae4f603be3f;p=thirdparty%2Fsamba.git sambatool: heuristics to decided whether colour is wanted The easy cases are --color=yes and --color=no. With --color=auto, we use color if it seems we're writing to a TTY. Signed-off-by: Douglas Bagnall Reviewed-by: Andrew Bartlett Autobuild-User(master): Andrew Bartlett Autobuild-Date(master): Thu May 31 04:34:52 CEST 2018 on sn-devel-144 --- diff --git a/python/samba/netcmd/__init__.py b/python/samba/netcmd/__init__.py index 9df096d5bd3..9b144d97f43 100644 --- a/python/samba/netcmd/__init__.py +++ b/python/samba/netcmd/__init__.py @@ -18,6 +18,7 @@ import optparse, samba from samba import getopt as options +from samba import colour from ldb import LdbError import sys, traceback import textwrap @@ -189,6 +190,29 @@ class Command(object): logger.addHandler(logging.StreamHandler(self.errf)) return logger + def apply_colour_choice(self, requested): + """Heuristics to work out whether the user wants colour output, from a + --color=yes|no|auto option. This alters the ANSI 16 bit colour + "constants" in the colour module to be either real colours or empty + strings. + """ + requested = requested.lower() + if requested == 'no': + colour.switch_colour_off() + + elif requested == 'yes': + colour.switch_colour_on() + + elif requested == 'auto': + if (hasattr(self.outf, 'isatty') and self.outf.isatty()): + colour.switch_colour_on() + else: + colour.switch_colour_off() + + else: + raise CommandError("Unknown --color option: %s " + "please choose from yes, no, auto") + class SuperCommand(Command): """A samba-tool command with subcommands."""