#!/usr/bin/env python3 from __future__ import annotations import pathlib import subprocess import tempfile ROOT = pathlib.Path(__file__).resolve().parents[1] def run(command: list[str]) -> None: result = subprocess.run(command, cwd=ROOT, text=True, capture_output=True) if result.returncode != 0: raise SystemExit(result.stdout + result.stderr) print(result.stdout.strip()) def main() -> int: with tempfile.TemporaryDirectory(prefix="versevdi-protocol-conformance-") as directory: temp = pathlib.Path(directory) rust_bin = temp / "rust-conformance" swift_bin = temp / "swift-conformance" rust_source = temp / "main.rs" rust_source.write_text( (ROOT / "gen/rust/protocol.rs").read_text(encoding="utf-8") + "\n" + (ROOT / "tools/native_conformance.rs").read_text(encoding="utf-8"), encoding="utf-8", ) run(["rustc", str(rust_source), "-O", "-o", str(rust_bin)]) run([str(rust_bin)]) main_source = temp / "main.swift" main_source.write_text((ROOT / "tools/native_conformance.swift").read_text(encoding="utf-8"), encoding="utf-8") run(["swiftc", "-parse-as-library", "gen/swift/Protocol.swift", str(main_source), "-o", str(swift_bin)]) run([str(swift_bin)]) return 0 if __name__ == "__main__": raise SystemExit(main())