30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
import subprocess
|
||
from typing import Tuple
|
||
|
||
|
||
class CLIExecutor:
|
||
"""Утилита для безопасного выполнения CLI‑команд.
|
||
|
||
Назначение:
|
||
Инкапсулирует вызов `subprocess.run` и приводит результат к удобному
|
||
кортежу (код возврата, stdout) без генерации исключений при ошибках.
|
||
"""
|
||
|
||
@staticmethod
|
||
def run(command: list) -> Tuple[int, str]:
|
||
"""
|
||
Выполняет команду в системе и возвращает код и вывод.
|
||
|
||
Args:
|
||
command (list): Список аргументов команды для выполнения.
|
||
|
||
Returns:
|
||
tuple: Код возврата и вывод команды.
|
||
"""
|
||
result = subprocess.run(
|
||
command,
|
||
stdout=subprocess.PIPE,
|
||
stderr=subprocess.PIPE,
|
||
check=False, # Не вызываем исключение при ошибке
|
||
)
|
||
return result.returncode, result.stdout.decode("utf-8")
|