Some checks failed
format / build (push) Failing after 6s
Signed-off-by: ngn <ngn@ngn.tf>
41 lines
1023 B
Python
41 lines
1023 B
Python
from time import strftime, localtime
|
|
from sys import stdout, stderr
|
|
from os import path
|
|
import inspect
|
|
|
|
BLUE = "\033[34m"
|
|
YELLOW = "\033[33m"
|
|
RED = "\033[31m"
|
|
RESET = "\033[0m"
|
|
|
|
|
|
def _log(color: str, level: str, msg: str, err=False) -> int:
|
|
frame = inspect.stack()[2]
|
|
filename = path.basename(inspect.getmodule(frame[0]).__file__)
|
|
|
|
timestr = strftime("%H:%M:%S", localtime())
|
|
funcstr = "%s:%d" % (filename, frame.lineno)
|
|
|
|
write = stderr.write if err else stdout.write
|
|
return write(
|
|
"%s[%s]%s %s %s: %s\n"
|
|
% (color, level.lower(), RESET, timestr, funcstr, msg)
|
|
)
|
|
|
|
|
|
def info(msg: str) -> None:
|
|
_log(BLUE, "info", msg)
|
|
|
|
|
|
def warn(msg: str) -> None:
|
|
_log(YELLOW, "warn", msg, err=True)
|
|
|
|
|
|
def fail(msg: str, exception=None) -> None:
|
|
size = _log(RED, "fail", msg, err=True)
|
|
|
|
if exception is not None:
|
|
size -= len(msg) + len(RED) + len(RESET) + 1 + len("details: ")
|
|
stderr.write(" " * size + "details: ")
|
|
stderr.write(exception.__str__() + "\n")
|