forked from mengyxu/noob-components
You can not 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
893 B
31 lines
893 B
""" |
|
Git command execution utility. |
|
|
|
Single source of truth for running git commands across all Trellis scripts. |
|
""" |
|
|
|
from __future__ import annotations |
|
|
|
import subprocess |
|
from pathlib import Path |
|
|
|
|
|
def run_git(args: list[str], cwd: Path | None = None) -> tuple[int, str, str]: |
|
"""Run a git command and return (returncode, stdout, stderr). |
|
|
|
Uses UTF-8 encoding with -c i18n.logOutputEncoding=UTF-8 to ensure |
|
consistent output across all platforms (Windows, macOS, Linux). |
|
""" |
|
try: |
|
git_args = ["git", "-c", "i18n.logOutputEncoding=UTF-8"] + args |
|
result = subprocess.run( |
|
git_args, |
|
cwd=cwd, |
|
capture_output=True, |
|
text=True, |
|
encoding="utf-8", |
|
errors="replace", |
|
) |
|
return result.returncode, result.stdout, result.stderr |
|
except Exception as e: |
|
return 1, "", str(e)
|
|
|