#!/usr/bin/env python3
"""Verify each listening real server belongs to the intended checkout, without exporting paths."""
import datetime, json, pathlib, re, subprocess, sys
out = {"capturedAt": datetime.datetime.now(datetime.timezone.utc).isoformat(), "servers": []}
for arg in sys.argv[1:]:
    side, value = arg.split("=", 1)
    checkout, port = value.rsplit(",", 1)
    root = pathlib.Path(checkout).resolve()
    sockets = subprocess.check_output(["ss", "-H", "-ltnp", f"sport = :{int(port)}"], text=True)
    pids = set(re.findall(r"pid=(\d+)", sockets))
    assert pids, f"{side}: no server listening"
    for pid in pids:
        cwd = pathlib.Path(f"/proc/{pid}/cwd").resolve()
        assert cwd.is_relative_to(root), f"{side}: server belongs to another checkout"
        git = lambda *args: subprocess.check_output(["git", "-C", str(cwd), *args], text=True).strip()
        out["servers"].append({"side": side, "listeningServerVerified": True, "cwdInsideExpectedCheckout": True, "sha": git("rev-parse", "HEAD"), "tree": git("rev-parse", "HEAD^{tree}"), "clean": git("status", "--porcelain") == ""})
print(json.dumps(out, indent=2))
