xref: /llvm-project/cross-project-tests/debuginfo-tests/dexter/dex/utils/Logging.py (revision f98ee40f4b5d7474fc67e82824bf6abbaedb7b1c)
1# DExTer : Debugging Experience Tester
2# ~~~~~~   ~         ~~         ~   ~~
3#
4# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5# See https://llvm.org/LICENSE.txt for license information.
6# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7"""Utility functions for producing command line warnings."""
8
9from dex.utils import PrettyOutput
10
11
12class Logger(object):
13    def __init__(self, pretty_output: PrettyOutput):
14        self.o = pretty_output
15        self.error_color = self.o.red
16        self.warning_color = self.o.yellow
17        self.note_color = self.o.default
18        self.verbosity = 1
19
20    def error(self, msg, enable_prefix=True, flag=None):
21        if self.verbosity < 0:
22            return
23        if enable_prefix:
24            msg = f"error: {msg}"
25        if flag:
26            msg = f"{msg} <y>[{flag}]</>"
27        self.error_color("{}\n".format(msg), stream=PrettyOutput.stderr)
28
29    def warning(self, msg, enable_prefix=True, flag=None):
30        if self.verbosity < 1:
31            return
32        if enable_prefix:
33            msg = f"warning: {msg}"
34        if flag:
35            msg = f"{msg} <y>[{flag}]</>"
36        self.warning_color("{}\n".format(msg), stream=PrettyOutput.stderr)
37
38    def note(self, msg, enable_prefix=True, flag=None):
39        if self.verbosity < 2:
40            return
41        if enable_prefix:
42            msg = f"note: {msg}"
43        if flag:
44            msg = f"{msg} <y>[{flag}]</>"
45        self.note_color("{}\n".format(msg), stream=PrettyOutput.stderr)
46