123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #!/usr/bin/env python3
- # SPDX-License-Identifier: GPL-2.0
- #
- # Utilities for printing and coloring output.
- #
- # Copyright (C) 2022, Google LLC.
- # Author: Daniel Latypov <[email protected]>
- import datetime
- import sys
- import typing
- _RESET = '\033[0;0m'
- class Printer:
- """Wraps a file object, providing utilities for coloring output, etc."""
- def __init__(self, output: typing.IO):
- self._output = output
- self._use_color = output.isatty()
- def print(self, message: str) -> None:
- print(message, file=self._output)
- def print_with_timestamp(self, message: str) -> None:
- ts = datetime.datetime.now().strftime('%H:%M:%S')
- self.print(f'[{ts}] {message}')
- def _color(self, code: str, text: str) -> str:
- if not self._use_color:
- return text
- return code + text + _RESET
- def red(self, text: str) -> str:
- return self._color('\033[1;31m', text)
- def yellow(self, text: str) -> str:
- return self._color('\033[1;33m', text)
- def green(self, text: str) -> str:
- return self._color('\033[1;32m', text)
- def color_len(self) -> int:
- """Returns the length of the color escape codes."""
- return len(self.red(''))
- # Provides a default instance that prints to stdout
- stdout = Printer(sys.stdout)
|