summaryrefslogtreecommitdiff
path: root/src/caelestia/utils/paths.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/caelestia/utils/paths.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/caelestia/utils/paths.py b/src/caelestia/utils/paths.py
index 6a6e0a8..3b5a7a6 100644
--- a/src/caelestia/utils/paths.py
+++ b/src/caelestia/utils/paths.py
@@ -1,5 +1,8 @@
import hashlib
+import json
import os
+import shutil
+import tempfile
from pathlib import Path
config_dir = Path(os.getenv("XDG_CONFIG_HOME", Path.home() / ".config"))
@@ -31,3 +34,10 @@ def compute_hash(path: str) -> str:
sha.update(chunk)
return sha.hexdigest()
+
+
+def atomic_dump(path: Path, content: dict[str, any]) -> None:
+ with tempfile.NamedTemporaryFile("w") as f:
+ json.dump(content, f)
+ f.flush()
+ shutil.move(f.name, path)