| #!/usr/bin/env python3 | |
| from __future__ import annotations | |
| import csv | |
| import sys | |
| from pathlib import Path | |
| from pearlygates.log_parser import parse_all_benchmark_tables, split_modes | |
| def main() -> int: | |
| if len(sys.argv) != 3: | |
| print("usage: parse_uploaded_log.py CODE_TXT OUT_DIR", file=sys.stderr) | |
| return 2 | |
| src = Path(sys.argv[1]) | |
| out_dir = Path(sys.argv[2]) | |
| out_dir.mkdir(parents=True, exist_ok=True) | |
| text = src.read_text(encoding="utf-8") | |
| for mode, chunk in split_modes(text).items(): | |
| (out_dir / f"{mode}.txt").write_text(chunk.strip() + "\n", encoding="utf-8") | |
| rows = [r.to_dict() for r in parse_all_benchmark_tables(text)] | |
| with (out_dir / "benchmark_tables.csv").open("w", newline="", encoding="utf-8") as handle: | |
| if rows: | |
| writer = csv.DictWriter(handle, fieldnames=list(rows[0].keys())) | |
| writer.writeheader() | |
| writer.writerows(rows) | |
| print(f"wrote {len(rows)} benchmark rows to {out_dir}") | |
| return 0 | |
| if __name__ == "__main__": | |
| raise SystemExit(main()) | |