Source code for ralph.git.rebase.subprocess_executor
"""Default SubprocessExecutor powered by run_git."""
from __future__ import annotations
from dataclasses import dataclass
from typing import TYPE_CHECKING
from ralph.git.rebase.process_result import ProcessResult
from ralph.git.subprocess_runner import GitRunOptions, run_git
if TYPE_CHECKING:
from collections.abc import Mapping, Sequence
from pathlib import Path
[docs]
@dataclass(frozen=True)
class SubprocessExecutor:
"""Default executor powered by run_git."""
def execute(
self,
command: str,
args: Sequence[str],
env: Mapping[str, str] | None = None,
cwd: Path | None = None,
) -> ProcessResult:
subcommand = args[0] if args else "unknown"
result = run_git(
args,
cwd=cwd,
label=f"git-rebase:{subcommand}",
options=GitRunOptions(env=env),
)
return ProcessResult(
returncode=result.returncode,
stdout=result.stdout.strip(),
stderr=result.stderr.strip(),
)