index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Dylan Taylor <dylan@dylanmtaylor.com> | 2021-05-15 12:29:57 -0400 |
---|---|---|
committer | Dylan Taylor <dylan@dylanmtaylor.com> | 2021-05-15 12:29:57 -0400 |
commit | 69d675f4aa14b4957d6376d642bec5cf4b96674e (patch) | |
tree | 76722a37d83b31d9ef46e2816560c3755d7291b1 /archinstall/lib/output.py | |
parent | 8eebc8ade3c6aa5685d49448003dad188e314834 (diff) |
-rw-r--r-- | archinstall/lib/output.py | 34 |
diff --git a/archinstall/lib/output.py b/archinstall/lib/output.py index d6a197f1..0818aed0 100644 --- a/archinstall/lib/output.py +++ b/archinstall/lib/output.py @@ -5,16 +5,18 @@ import logging from pathlib import Path from .storage import storage + # TODO: use logging's built in levels instead. # Although logging is threaded and I wish to avoid that. # It's more Pythonistic or w/e you want to call it. -class LOG_LEVELS: +class LogLevels: Critical = 0b001 Error = 0b010 Warning = 0b011 Info = 0b101 Debug = 0b111 + class journald(dict): @abc.abstractmethod def log(message, level=logging.DEBUG): @@ -27,19 +29,19 @@ class journald(dict): # to logging levels (and warn about deprecated usage) # There's some code re-usage here but that should be fine. # TODO: Remove these in a few versions: - if level == LOG_LEVELS.Critical: + if level == LogLevels.Critical: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) level = logging.CRITICAL - elif level == LOG_LEVELS.Error: + elif level == LogLevels.Error: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) level = logging.ERROR - elif level == LOG_LEVELS.Warning: + elif level == LogLevels.Warning: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) level = logging.WARNING - elif level == LOG_LEVELS.Info: + elif level == LogLevels.Info: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) level = logging.INFO - elif level == LOG_LEVELS.Debug: + elif level == LogLevels.Debug: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) level = logging.DEBUG @@ -49,14 +51,16 @@ class journald(dict): log_ch.setFormatter(log_fmt) log_adapter.addHandler(log_ch) log_adapter.setLevel(logging.DEBUG) - + log_adapter.log(level, message) + # TODO: Replace log() for session based logging. -class SessionLogging(): +class SessionLogging: def __init__(self): pass + # Found first reference here: https://stackoverflow.com/questions/7445658/how-to-detect-if-the-console-does-support-ansi-escape-codes-in-python # And re-used this: https://github.com/django/django/blob/master/django/core/management/color.py#L12 def supports_color(): @@ -70,6 +74,7 @@ def supports_color(): is_a_tty = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty() return supported_platform and is_a_tty + # Heavily influenced by: https://github.com/django/django/blob/ae8338daf34fd746771e0678081999b656177bae/django/utils/termcolors.py#L13 # Color options here: https://askubuntu.com/questions/528928/how-to-do-underline-bold-italic-strikethrough-color-background-and-size-i def stylize_output(text :str, *opts, **kwargs): @@ -94,6 +99,7 @@ def stylize_output(text :str, *opts, **kwargs): text = '%s\x1b[%sm' % (text or '', RESET) return '%s%s' % (('\x1b[%sm' % ';'.join(code_list)), text or '') + def log(*args, **kwargs): string = orig_string = ' '.join([str(x) for x in args]) @@ -132,19 +138,19 @@ def log(*args, **kwargs): # to logging levels (and warn about deprecated usage) # There's some code re-usage here but that should be fine. # TODO: Remove these in a few versions: - if kwargs['level'] == LOG_LEVELS.Critical: + if kwargs['level'] == LogLevels.Critical: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) kwargs['level'] = logging.CRITICAL - elif kwargs['level'] == LOG_LEVELS.Error: + elif kwargs['level'] == LogLevels.Error: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) kwargs['level'] = logging.ERROR - elif kwargs['level'] == LOG_LEVELS.Warning: + elif kwargs['level'] == LogLevels.Warning: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) kwargs['level'] = logging.WARNING - elif kwargs['level'] == LOG_LEVELS.Info: + elif kwargs['level'] == LogLevels.Info: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) kwargs['level'] = logging.INFO - elif kwargs['level'] == LOG_LEVELS.Debug: + elif kwargs['level'] == LogLevels.Debug: log("Deprecated level detected in log message, please use new logging.<level> instead for the following log message:", fg="red", level=logging.ERROR, force=True) kwargs['level'] = logging.DEBUG @@ -156,7 +162,7 @@ def log(*args, **kwargs): try: journald.log(string, level=kwargs.get('level', logging.INFO)) except ModuleNotFoundError: - pass # Ignore writing to journald + pass # Ignore writing to journald # Finally, print the log unless we skipped it based on level. # We use sys.stdout.write()+flush() instead of print() to try and |