2020-01-21 01:08:28 -07:00
|
|
|
"""Helper functions for CLI message printing."""
|
2020-02-14 16:28:45 -07:00
|
|
|
# Standard Library
|
2021-09-27 01:40:49 -07:00
|
|
|
import typing as t
|
2020-01-21 01:08:28 -07:00
|
|
|
|
2020-02-03 02:35:11 -07:00
|
|
|
# Project
|
2021-09-27 01:40:49 -07:00
|
|
|
from hyperglass.log import HyperglassConsole
|
2020-01-21 01:08:28 -07:00
|
|
|
|
|
|
|
|
2021-09-27 01:40:49 -07:00
|
|
|
class Echo:
|
|
|
|
"""Container for console-printing functions."""
|
2020-01-21 01:08:28 -07:00
|
|
|
|
2021-09-27 01:40:49 -07:00
|
|
|
_console = HyperglassConsole
|
2020-01-21 01:08:28 -07:00
|
|
|
|
2021-09-27 01:40:49 -07:00
|
|
|
def _fmt(self, message: t.Any, *args: t.Any, **kwargs: t.Any) -> t.Any:
|
|
|
|
if isinstance(message, str):
|
|
|
|
args = (f"[bold]{arg}[/bold]" for arg in args)
|
|
|
|
kwargs = {k: f"[bold]{v}[/bold]" for k, v in kwargs.items()}
|
|
|
|
return message.format(*args, **kwargs)
|
|
|
|
return message
|
2020-01-21 01:08:28 -07:00
|
|
|
|
2021-09-27 01:40:49 -07:00
|
|
|
def error(self, message: str, *args, **kwargs):
|
|
|
|
"""Print an error message."""
|
|
|
|
return self._console.print(self._fmt(message, *args, **kwargs), style="error")
|
2020-01-21 01:08:28 -07:00
|
|
|
|
2021-09-27 01:40:49 -07:00
|
|
|
def info(self, message: str, *args, **kwargs):
|
|
|
|
"""Print an informational message."""
|
|
|
|
return self._console.print(self._fmt(message, *args, **kwargs), style="info")
|
2020-01-21 01:08:28 -07:00
|
|
|
|
2021-09-27 01:40:49 -07:00
|
|
|
def warning(self, message: str, *args, **kwargs):
|
|
|
|
"""Print a warning message."""
|
|
|
|
return self._console.print(self._fmt(message, *args, **kwargs), style="info")
|
2020-01-21 01:08:28 -07:00
|
|
|
|
2021-09-27 01:40:49 -07:00
|
|
|
def success(self, message: str, *args, **kwargs):
|
|
|
|
"""Print a success message."""
|
|
|
|
return self._console.print(self._fmt(message, *args, **kwargs), style="success")
|
2020-01-21 01:08:28 -07:00
|
|
|
|
2021-09-27 01:40:49 -07:00
|
|
|
def plain(self, message: str, *args, **kwargs):
|
|
|
|
"""Print an unformatted message."""
|
|
|
|
return self._console.print(self._fmt(message, *args, **kwargs))
|
2020-01-21 01:08:28 -07:00
|
|
|
|
|
|
|
|
2021-09-27 01:40:49 -07:00
|
|
|
echo = Echo()
|