From bd2db73ee5669d8802bb2cf7e8a7339eca948b18 Mon Sep 17 00:00:00 2001 From: Goffi Date: Wed, 18 Oct 2023 15:30:07 +0200 Subject: [PATCH] cli: `rich` initial integration --- libervia/cli/base.py | 10 ++++++++++ libervia/cli/constants.py | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/libervia/cli/base.py b/libervia/cli/base.py index d4858186..9c31f056 100644 --- a/libervia/cli/base.py +++ b/libervia/cli/base.py @@ -52,6 +52,7 @@ from libervia.frontends.bridge.bridge_frontend import BridgeException from libervia.frontends.tools import misc import xml.etree.ElementTree as ET # FIXME: used temporarily to manage XMLUI from collections import OrderedDict +from rich import console ## bridge handling # we get bridge name from conf and initialise the right class accordingly @@ -106,6 +107,7 @@ class LiberviaCli: @attribute progress_failure(callable): method to call when progress failed by default display a message """ + self.console = console.Console(theme=C.THEME_DEFAULT) self.sat_conf = main_config self.set_color_theme() bridge_module = dynamic_import.bridge(bridge_name, 'libervia.frontends.bridge') @@ -734,6 +736,7 @@ class LiberviaCli: def run(cls): cls()._run() + def _read_stdin(self, stdin_fut): """Callback called by ainput to read stdin""" line = sys.stdin.readline() @@ -1122,6 +1125,13 @@ class CommandBase: def progress_id(self): return self.host.progress_id + @property + def console(self): + return self.host.console + + def print(self, *args, **kwargs): + self.host.console.print(*args, **kwargs) + async def set_progress_id(self, progress_id): return await self.host.set_progress_id(progress_id) diff --git a/libervia/cli/constants.py b/libervia/cli/constants.py index 9a2216e5..b9a0fb4e 100644 --- a/libervia/cli/constants.py +++ b/libervia/cli/constants.py @@ -19,6 +19,7 @@ from libervia.frontends.quick_frontend import constants from libervia.backend.tools.common.ansi import ANSI as A +from rich.theme import Theme class Const(constants.Const): @@ -83,3 +84,12 @@ class Const(constants.Const): # Files A_DIRECTORY = A.BOLD + A.FG_CYAN A_FILE = A.FG_WHITE + + # rich + THEME_DEFAULT = Theme({ + "priority_low": "green", + "priority_medium": "yellow", + "priority_high": "bold magenta", + "priority_urgent": "bold red", + "notif_title": "bold", + })