Re: [PATCH v2] checkkconfigsymbols.py: add --no-color option, don't print color to non-TTY

From: Valentin Rothberg
Date: Tue Jul 05 2016 - 04:47:37 EST


Hi Andrew,

I am fine with this version of the patch, thanks. Usually patches to
this script go through Greg's misc tree.

Best regards,
Valentin

On Tue, Jul 5, 2016 at 9:47 AM, Andrew Donnellan
<andrew.donnellan@xxxxxxxxxxx> wrote:
> Only print the ANSI colour escape codes if stdout is a TTY. Useful if
> redirecting output to a file or piping to another script.
>
> Also add a new option, --no-color, if the user wants to disable colour
> output for whatever reason.
>
> Signed-off-by: Andrew Donnellan <andrew.donnellan@xxxxxxxxxxx>
>
> ---
>
> V1->V2:
> - automatically detect non-TTYs and disable colour output.
> Suggested by Josh Triplett
> ---
> scripts/checkkconfigsymbols.py | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/checkkconfigsymbols.py b/scripts/checkkconfigsymbols.py
> index df643f6..b140fc9 100755
> --- a/scripts/checkkconfigsymbols.py
> +++ b/scripts/checkkconfigsymbols.py
> @@ -82,6 +82,11 @@ def parse_options():
> default=False,
> help="Reset current Git tree even when it's dirty.")
>
> + parser.add_option('', '--no-color', dest='color', action='store_false',
> + default=True,
> + help="Don't print colored output. Default when not "
> + "outputting to a terminal.")
> +
> (opts, _) = parser.parse_args()
>
> if opts.commit and opts.diff:
> @@ -116,6 +121,9 @@ def main():
> """Main function of this module."""
> opts = parse_options()
>
> + global color
> + color = opts.color and sys.stdout.isatty()
> +
> if opts.sim and not opts.commit and not opts.diff:
> sims = find_sims(opts.sim, opts.ignore)
> if sims:
> @@ -202,14 +210,14 @@ def yel(string):
> """
> Color %string yellow.
> """
> - return "\033[33m%s\033[0m" % string
> + return "\033[33m%s\033[0m" % string if color else string
>
>
> def red(string):
> """
> Color %string red.
> """
> - return "\033[31m%s\033[0m" % string
> + return "\033[31m%s\033[0m" % string if color else string
>
>
> def execute(cmd):
> --
> Andrew Donnellan OzLabs, ADL Canberra
> andrew.donnellan@xxxxxxxxxxx IBM Australia Limited
>