From cc5eb55dbe02d65910c5278a375d0d5640374208 Mon Sep 17 00:00:00 2001 From: xXJsonDeruloXx Date: Sat, 1 Aug 2026 15:14:09 -0400 Subject: fix package layout for Decky runtime modules --- py_modules/services/files.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 py_modules/services/files.py (limited to 'py_modules/services/files.py') diff --git a/py_modules/services/files.py b/py_modules/services/files.py new file mode 100644 index 0000000..d8571ba --- /dev/null +++ b/py_modules/services/files.py @@ -0,0 +1,36 @@ +"""Small filesystem helpers shared by service modules.""" + +import filecmp +import hashlib +import json +from pathlib import Path + + +def file_sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for chunk in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def files_match(file_a: Path, file_b: Path) -> bool: + try: + return file_a.is_file() and file_b.is_file() and filecmp.cmp(file_a, file_b, shallow=False) + except OSError: + return False + + +def read_json(path: Path) -> dict: + try: + with path.open("r", encoding="utf-8") as stream: + payload = json.load(stream) + return payload if isinstance(payload, dict) else {} + except (OSError, ValueError, TypeError): + return {} + + +def write_json(path: Path, payload: dict) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("w", encoding="utf-8") as stream: + json.dump(payload, stream, indent=2) -- cgit v1.2.3