| 46 | |
| 47 | @dataclass |
| 48 | class RemovalResult: |
| 49 | path: Path |
| 50 | removed: bool |
| 51 | method: str # "git", "git+chmod", "clud-trash", or "skipped" |
| 52 | error: str # empty on success |
| 53 | |
| 54 | |
| 55 | def run_git(args: list[str], cwd: Path | None) -> subprocess.CompletedProcess[str]: |