This commit is contained in:
Marc Beninca 2024-09-17 22:35:05 +02:00
parent 149ed2dc3b
commit 313cc30aec
Signed by: marc.beninca
GPG key ID: 9C7613450C80C24F

View file

@ -9,13 +9,22 @@ class Command(Class):
"""Command to run.""" """Command to run."""
def __init__(self, *arguments: str | tuple[str, ...]) -> None: def __init__(self, *arguments: str | tuple[str, ...]) -> None:
"""Set raw & flat arguments.""" """Set raw & flat arguments.
:param *arguments: single argument or grouped ones
:type *arguments: str | tuple[str, ...]
"""
self.raw = arguments self.raw = arguments
self.flat: list[str] = [] self.flat: list[str] = []
def get_tuples_args(*items: str | tuple[str, ...]) -> list[str]: def get_tuples_args(*items: str | tuple[str, ...]) -> list[str]:
"""Turn arguments tuples into an arguments list.""" """Turn arguments tuples into an arguments list.
:param *items: single item or grouped ones
:type *items: str | tuple[str, ...]
:rtype: list[str]
"""
args: list[str] = [] args: list[str] = []
for item in items: for item in items:
match item: match item:
@ -27,14 +36,26 @@ def get_tuples_args(*items: str | tuple[str, ...]) -> list[str]:
def run(*items: str | tuple[str, ...]) -> subprocess.CompletedProcess: def run(*items: str | tuple[str, ...]) -> subprocess.CompletedProcess:
"""Run from a list of arguments tuples.""" """Run from a list of arguments tuples.
:param *items: single item or grouped ones
:type *items: str | tuple[str, ...]
:rtype: subprocess.CompletedProcess
"""
return subprocess.run( return subprocess.run(
get_tuples_args(*items), capture_output=False, check=True get_tuples_args(*items), capture_output=False, check=True
) )
def run_line(*items: str | tuple[str, ...], charset: str = txt.CHARSET) -> str: def run_line(*items: str | tuple[str, ...], charset: str = txt.CHARSET) -> str:
"""Run and return output line.""" """Run and return output line.
:param *items: single item or grouped ones
:type *items: str | tuple[str, ...]
:param charset: charset to use for decoding binary output
:type charset: str
:rtype: str
"""
line, *_ = run_lines(*items, charset=charset) line, *_ = run_lines(*items, charset=charset)
return line return line
@ -42,7 +63,14 @@ def run_line(*items: str | tuple[str, ...], charset: str = txt.CHARSET) -> str:
def run_lines( def run_lines(
*items: str | tuple[str, ...], charset: str = txt.CHARSET *items: str | tuple[str, ...], charset: str = txt.CHARSET
) -> list[str]: ) -> list[str]:
"""Run and return output lines.""" """Run and return output lines.
:param *items: single item or grouped ones
:type *items: str | tuple[str, ...]
:param charset: charset to use for decoding binary output
:type charset: str
:rtype: list[str]
"""
process = subprocess.run( process = subprocess.run(
get_tuples_args(*items), capture_output=True, check=True get_tuples_args(*items), capture_output=True, check=True
) )