"""Read Git status in the current directory; fail if Git fails before conversion.""" import json import subprocess import tempfile from convert import MAX_BYTES, parse_status def main(): try: with tempfile.TemporaryFile() as output: completed = subprocess.run(["git", "--no-optional-locks", "status", "--porcelain=v2", "-z", "--untracked-files=all"], stdout=output, stderr=subprocess.DEVNULL, timeout=30, check=False) if completed.returncode: print(json.dumps({"ok": False, "error": "git_status_failed", "exit_code": completed.returncode})) return 1 output.seek(0) result = parse_status(output.read(MAX_BYTES + 1)) except FileNotFoundError: result = {"ok": False, "error": "git_not_installed"} except subprocess.TimeoutExpired: result = {"ok": False, "error": "git_status_timeout"} except ValueError as error: result = {"ok": False, "error": str(error)} except OSError: result = {"ok": False, "error": "local_io_error"} print(json.dumps(result, ensure_ascii=True)) return 0 if result["ok"] else 1 if __name__ == "__main__": raise SystemExit(main())