From 4680c69b9f4ffb7c1ebf1e000f8c4d4c5ed8e242 Mon Sep 17 00:00:00 2001 From: axolotle Date: Thu, 12 Jan 2023 12:36:09 +0100 Subject: [PATCH] add moulinette display/prompt mocking --- src/interface/__init__.py | 7 +++++-- src/interface/cli.py | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/interface/__init__.py b/src/interface/__init__.py index c5fb0bbc7..50c035f0a 100644 --- a/src/interface/__init__.py +++ b/src/interface/__init__.py @@ -1,6 +1,9 @@ import os +from yunohost.interface.base import InterfaceKind + if os.environ.get("INTERFACE", "cli") == "cli": - from yunohost.interface.cli import Interface # noqa + from yunohost.interface.cli import Interface else: - from yunohost.interface.api import Interface # noqa + from yunohost.interface.api import Interface + diff --git a/src/interface/cli.py b/src/interface/cli.py index 555943f49..1bdcff541 100644 --- a/src/interface/cli.py +++ b/src/interface/cli.py @@ -2,6 +2,7 @@ from __future__ import ( annotations, ) # Enable self reference a class in its own method arguments +import os import inspect import typer import yaml @@ -44,6 +45,23 @@ class Interface(BaseInterface): interface.instance, name=interface.name, help=interface.help ) + @staticmethod + def display(content: str): + if os.environ.get("INTERFACE") == "cli": + rprint(content) + else: + from moulinette import Moulinette + Moulinette.display(content) + + @staticmethod + def prompt(ask: str, is_password=False, confirm=False, **kwargs): + if os.environ.get("INTERFACE") == "cli": + return typer.prompt(ask, hide_input=is_password, confirmation_prompt=confirm) + else: + from moulinette import Moulinette + return Moulinette.prompt(ask, is_password=is_password, confirm=confirm, **kwargs) + + def cli(self, command_def: str, **extra_data): def decorator(func: Callable): signature = inspect.signature(func)