eeprom-programmer/client/helpers/Logger.py

58 lines
1.7 KiB
Python

from typing import Any
import click
class Logger:
verbose: bool
def __init__(self, verbose: bool = False):
self.verbose = verbose
@staticmethod
def _log(prefix: str = 'LOG', message: Any = '', nl: bool = True, **kwargs) -> None:
text = '{}: {}'.format(prefix, message) if message else ''
click.secho(text, nl=nl, **kwargs)
@staticmethod
def _join(*args, delimiter: str = ' ') -> str:
return delimiter.join([str(arg) for arg in args])
def debug(self, *args, **kwargs) -> None:
"""
Write a message to stdout only if the '--verbose' option is set (in gray).
"""
if self.verbose:
kwargs.setdefault('fg', 'bright_black')
self._log('DEBUG', self._join(*args), **kwargs)
def info(self, *args, **kwargs) -> None:
"""
Write a message to stdout (in white).
"""
kwargs.setdefault('fg', 'white')
self._log('INFO', self._join(*args), **kwargs)
def warn(self, *args, **kwargs) -> None:
"""
Write a warning message to stderr (in yellow).
"""
kwargs.setdefault('fg', 'yellow')
self._log('WARNING', self._join(*args), **kwargs)
def error(self, *args, **kwargs) -> None:
"""
Write an error message to stderr (in red).
"""
kwargs.setdefault('fg', 'red')
self._log('ERROR', self._join(*args), err=True, **kwargs)
def success(self, *args, **kwargs) -> None:
"""
Write a success message stdout (in green).
"""
kwargs.setdefault('fg', 'green')
self._log('SUCCESS', self._join(*args), **kwargs)
logger = Logger()