|
1 | 1 | import os, sys |
2 | 2 | from types import SimpleNamespace as sn |
| 3 | +from typing import Optional |
3 | 4 | if sys.platform == 'win32' : import colorama ; colorama.init() # enable ANSI color support |
4 | 5 |
|
| 6 | +from . import env |
| 7 | + |
5 | 8 | try : terminal_width = os.get_terminal_size()[0] |
6 | 9 | except OSError : terminal_width = 80 |
7 | 10 |
|
@@ -29,6 +32,27 @@ def success(msg: str, *args, **kwargs) -> None : print(f'\n{colors.bg}{msg.forma |
29 | 32 | def tip(msg: str, *args, **kwargs) -> None : print(f'\n{colors.bc}TIP: {msg.format(*args, **kwargs)}{colors.nc}') |
30 | 33 | def warn(msg: str, *args, **kwargs) -> None : print(f'\n{colors.bo}WARNING: {msg.format(*args, **kwargs)}{colors.nc}') |
31 | 34 |
|
| 35 | +def debug(msg: str, cli: Optional[sn] = None, *args, **kwargs) -> None: |
| 36 | + if not env.is_debug_mode() : return |
| 37 | + |
| 38 | + # Init --debug [target] |
| 39 | + debug_key=None |
| 40 | + debug_argidx = sys.argv.index('--debug') if '--debug' in sys.argv else sys.argv.index('-V') |
| 41 | + if debug_argidx +1 < len(sys.argv) and not sys.argv[debug_argidx +1].startswith('-'): |
| 42 | + debug_key = sys.argv[debug_argidx +1].replace('-', '_') |
| 43 | + |
| 44 | + if cli: # init data line |
| 45 | + if debug_key: |
| 46 | + data_val = getattr(cli.config, debug_key, f'cli.config key {debug_key!r} {cli.msgs.warn_NOT_FOUND.lower()}') |
| 47 | + else: |
| 48 | + data_val = cli.config |
| 49 | + msg += f'\n{colors.gry}{data_val}{colors.nc}' |
| 50 | + |
| 51 | + if args: # use 'em |
| 52 | + msg = msg.format(*args, **kwargs) |
| 53 | + |
| 54 | + print(f'\n{colors.by}DEBUG: {msg}{colors.nc}') |
| 55 | + |
32 | 56 | def trunc(msg: str, end: str = '\n') -> None: |
33 | 57 | truncated_lines = [ |
34 | 58 | line if len(line) < terminal_width else line[:terminal_width -4] + '...' for line in msg.splitlines()] |
|
0 commit comments