2 # SPDX-License-Identifier: GPL-2.0
4 # Utilities for printing and coloring output.
6 # Copyright (C) 2022, Google LLC.
7 # Author: Daniel Latypov <dlatypov@google.com>
16 """Wraps a file object, providing utilities for coloring output, etc."""
18 def __init__(self
, print: bool=True, output
: typing
.IO
[str]=sys
.stdout
):
22 self
._use
_color
= output
.isatty()
24 self
._use
_color
= False
26 def print(self
, message
: str) -> None:
28 print(message
, file=self
._output
)
30 def print_with_timestamp(self
, message
: str) -> None:
31 ts
= datetime
.datetime
.now().strftime('%H:%M:%S')
32 self
.print(f
'[{ts}] {message}')
34 def _color(self
, code
: str, text
: str) -> str:
35 if not self
._use
_color
:
37 return code
+ text
+ _RESET
39 def red(self
, text
: str) -> str:
40 return self
._color
('\033[1;31m', text
)
42 def yellow(self
, text
: str) -> str:
43 return self
._color
('\033[1;33m', text
)
45 def green(self
, text
: str) -> str:
46 return self
._color
('\033[1;32m', text
)
48 def color_len(self
) -> int:
49 """Returns the length of the color escape codes."""
50 return len(self
.red(''))
52 # Provides a default instance that prints to stdout
54 null_printer
= Printer(print=False)