switch CLI to using click, handles printing colors
docs for click are good, would recommend skimming over them https://click.palletsprojects.com/en/7.x/#documentation everything is backwards-compatible with the previous interface, the only minor changes were to the doctor cmd which can now accept more than one item to run, and the --skip-config-check to skip the config_ok check if the user specifies to added a test using click.testing.CliRunner (tests the CLI in an isolated environment), though additional tests which aren't testing the CLI itself (parsing arguments or decorator behaviour) can just call the functions themselves, as they no longer accept a argparser.Namespace and instead accept the direct arguments
This commit is contained in:
parent
5ef2775265
commit
ff424e5e80
4 changed files with 153 additions and 131 deletions
|
@ -9,6 +9,9 @@ import sys
|
|||
from typing import Optional
|
||||
import warnings
|
||||
|
||||
import click
|
||||
|
||||
|
||||
# just bring in the scope of this module for convenience
|
||||
from warnings import warn
|
||||
|
||||
|
@ -18,16 +21,11 @@ def _colorize(x: str, color: Optional[str]=None) -> str:
|
|||
|
||||
if not sys.stdout.isatty():
|
||||
return x
|
||||
# click handles importing/initializing colorama if necessary
|
||||
# on windows it installs it if necessary
|
||||
# on linux/mac, it manually handles ANSI without needing termcolor
|
||||
return click.style(x, fg=color)
|
||||
|
||||
# I'm not sure about this approach yet, so don't want to introduce a hard dependency yet
|
||||
try:
|
||||
import termcolor # type: ignore[import]
|
||||
import colorama # type: ignore[import]
|
||||
colorama.init()
|
||||
return termcolor.colored(x, color)
|
||||
except:
|
||||
# todo log something?
|
||||
return x
|
||||
|
||||
def _warn(message: str, *args, color: Optional[str]=None, **kwargs) -> None:
|
||||
stacklevel = kwargs.get('stacklevel', 1)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue