from __future__ import annotations
import json
import os
from typing import Any, Dict, List
def snapshot_dir(base_dir: str, snapshot_id: str) -> str:
return os.path.join(base_dir, "snapshots", snapshot_id)
def write_json(path: str, obj: Any) -> None:
os.makedirs(os.path.dirname(path), exist_ok=True)
with open(path, "w", encoding="utf-8") as f:
json.dump(obj, f, indent=2, sort_keys=True, default=str)
def read_json(path: str) -> Any:
with open(path, "r", encoding="utf-8") as f:
return json.load(f)
def save_snapshot(base_dir: str, snapshot_id: str, snapshot: Dict[str, Any]) -> str:
d = snapshot_dir(base_dir, snapshot_id)
write_json(os.path.join(d, "snapshot.json"), snapshot)
return d
def save_findings(base_dir: str, snapshot_id: str, findings: List[Dict[str, Any]]) -> str:
d = snapshot_dir(base_dir, snapshot_id)
write_json(os.path.join(d, "findings.json"), findings)
return d