"""Collect the Refining/Energy factor (EIA crack spread) to a JSON snapshot.""" from __future__ import annotations import argparse import json from datetime import datetime, timezone from pathlib import Path from app import refining_energy def main() -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--out", type=Path, help="write JSON snapshot to this file (default: stdout)") parser.add_argument("--timeout", type=float, default=30.0) args = parser.parse_args() snap = refining_energy.fetch_refining(timeout=args.timeout) payload = { "source": "eia", "retrieved_at": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"), "factor": "refining_energy", "data": snap.to_dict(), } text = json.dumps(payload, ensure_ascii=False, sort_keys=True, indent=2) if args.out: args.out.parent.mkdir(parents=True, exist_ok=True) args.out.write_text(text, encoding="utf-8") print(f"wrote refining_energy snapshot -> {args.out}") else: print(text) return 0 if __name__ == "__main__": raise SystemExit(main())