You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
776 B
Python

from __future__ import annotations
from pathlib import PurePath
import subprocess
from typing import Optional
from .base import CommandArgs
from .completed import CompletedExec
from .execution import ExecutorTarget
from ..misc.singleton import Singleton
class HostExecutor(ExecutorTarget, metaclass=Singleton):
def exec_cmd(
self,
*,
command: CommandArgs,
check: bool,
capture_stdout: bool,
work_dir: Optional[PurePath] = None,
) -> CompletedExec:
return CompletedExec(
subprocess.run(
args=command,
check=check,
cwd=work_dir,
shell=False,
stdout=subprocess.PIPE if capture_stdout else None,
)
)