mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-05-17 14:29:27 +00:00
fix(service): render request_input prompt via rich console
This commit is contained in:
@@ -17,6 +17,7 @@ import requests
|
|||||||
from requests.adapters import HTTPAdapter, Retry
|
from requests.adapters import HTTPAdapter, Retry
|
||||||
from rich.padding import Padding
|
from rich.padding import Padding
|
||||||
from rich.rule import Rule
|
from rich.rule import Rule
|
||||||
|
from rich.text import Text
|
||||||
|
|
||||||
from unshackle.core.cacher import Cacher
|
from unshackle.core.cacher import Cacher
|
||||||
from unshackle.core.config import config
|
from unshackle.core.config import config
|
||||||
@@ -359,13 +360,16 @@ class Service(metaclass=ABCMeta):
|
|||||||
def request_input(self, prompt: str) -> str:
|
def request_input(self, prompt: str) -> str:
|
||||||
"""Request interactive input from the user.
|
"""Request interactive input from the user.
|
||||||
|
|
||||||
When running locally (CLI), falls back to ``input()``.
|
When running locally (CLI), prompts via the shared rich console so the
|
||||||
|
prompt renders correctly alongside Live progress / log handlers.
|
||||||
When running in serve mode with an :class:`InputBridge` attached,
|
When running in serve mode with an :class:`InputBridge` attached,
|
||||||
delegates to the bridge which relays the prompt to the remote client.
|
delegates to the bridge which relays the prompt to the remote client.
|
||||||
"""
|
"""
|
||||||
if self._input_bridge is not None:
|
if self._input_bridge is not None:
|
||||||
return self._input_bridge.request_input(prompt)
|
return self._input_bridge.request_input(prompt)
|
||||||
return input(prompt)
|
indent = " " * 5
|
||||||
|
padded = indent + prompt.replace("\n", "\n" + indent)
|
||||||
|
return console.input(Text(padded, style="text"))
|
||||||
|
|
||||||
def search(self) -> Generator[SearchResult, None, None]:
|
def search(self) -> Generator[SearchResult, None, None]:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user