From ed24ef73be63048d8ae883c4a9e1fa419ba8d974 Mon Sep 17 00:00:00 2001 From: checktheroads Date: Sat, 15 Feb 2020 12:18:03 -0700 Subject: [PATCH] handle lack of color/emoji support --- .tests/DockerfileUbuntu | 5 ++++- hyperglass/cli/commands.py | 14 ++++++++++---- hyperglass/cli/echo.py | 8 ++++++-- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/.tests/DockerfileUbuntu b/.tests/DockerfileUbuntu index cf8bee8..23e2990 100644 --- a/.tests/DockerfileUbuntu +++ b/.tests/DockerfileUbuntu @@ -1,4 +1,6 @@ FROM ubuntu:bionic as base +ENV LC_ALL=C.UTF-8 +ENV LANG=C.UTF-8 RUN apt-get update && apt-get install -y \ git \ curl \ @@ -10,7 +12,8 @@ ENV PATH="$PATH:$HOME/.poetry/bin" FROM base WORKDIR ./hyperglass ENV python=python3 -RUN ln -s $(which python3) /usr/bin/python \ +RUN bash -c 'BASH_ENV=/etc/profile exec bash' \ + && ln -s $(which python3) /usr/bin/python \ && python --version \ && $HOME/.poetry/bin/poetry install --no-ansi \ && $HOME/.poetry/bin/poetry run hyperglass setup -d diff --git a/hyperglass/cli/commands.py b/hyperglass/cli/commands.py index 8aa0f6d..76fc5b3 100644 --- a/hyperglass/cli/commands.py +++ b/hyperglass/cli/commands.py @@ -2,6 +2,7 @@ # Standard Library import os +import sys from pathlib import Path # Third Party @@ -17,10 +18,13 @@ from hyperglass.cli.formatting import HelpColorsGroup, HelpColorsCommand, random # Define working directory WORKING_DIR = Path(__file__).parent +supports_color = "utf" in sys.getfilesystemencoding().lower() + @group( cls=HelpColorsGroup, help=CLI_HELP, + context_settings={"color": supports_color}, help_headers_color=LABEL, help_options_custom_colors=random_colors("build-ui", "start", "secret", "setup"), ) @@ -29,7 +33,9 @@ def hg(): pass -@hg.command("build-ui", help=cmd_help(E.BUTTERFLY, "Create a new UI build")) +@hg.command( + "build-ui", help=cmd_help(E.BUTTERFLY, "Create a new UI build", supports_color) +) def build_frontend(): """Create a new UI build. @@ -41,7 +47,7 @@ def build_frontend(): @hg.command( "start", - help=cmd_help(E.ROCKET, "Start web server"), + help=cmd_help(E.ROCKET, "Start web server", supports_color), cls=HelpColorsCommand, help_options_custom_colors=random_colors("-b"), ) @@ -65,7 +71,7 @@ def start(build): @hg.command( "secret", - help=cmd_help(E.LOCK, "Generate agent secret"), + help=cmd_help(E.LOCK, "Generate agent secret", supports_color), cls=HelpColorsCommand, help_options_custom_colors=random_colors("-l"), ) @@ -86,7 +92,7 @@ def generate_secret(length): @hg.command( "setup", - help=cmd_help(E.TOOLBOX, "Run the setup wizard"), + help=cmd_help(E.TOOLBOX, "Run the setup wizard", supports_color), cls=HelpColorsCommand, help_options_custom_colors=random_colors("-d"), ) diff --git a/hyperglass/cli/echo.py b/hyperglass/cli/echo.py index 8c5c4ff..ae633af 100644 --- a/hyperglass/cli/echo.py +++ b/hyperglass/cli/echo.py @@ -10,9 +10,13 @@ from hyperglass.cli.static import CMD_HELP, Message from hyperglass.cli.exceptions import CliError -def cmd_help(emoji="", help_text=""): +def cmd_help(emoji="", help_text="", supports_color=False): """Print formatted command help.""" - return emoji + style(help_text, **CMD_HELP) + if supports_color: + help_str = emoji + style(help_text, **CMD_HELP) + else: + help_str = help_text + return help_str def _base_formatter(state, text, callback, **kwargs):