#!/usr/bin/env python3
from pathlib import Path
import re

root = Path(__file__).resolve().parents[1]
dumper = (root / "libfriidump" / "dumper.c").read_text(encoding="utf-8")
portable = (root / "libfriidump" / "xbox_portable.c").read_text(encoding="utf-8")
cmake = (root / "libfriidump" / "CMakeLists.txt").read_text(encoding="utf-8")
rsp = (root / "msvc32_friidump.rsp").read_text(encoding="utf-8")

checks = [
    ("portable source is compiled by CMake", "xbox_portable.c" in cmake),
    ("portable source is compiled by MSVC response file", r"libfriidump\xbox_portable.c" in rsp),
    ("portable XDFS/XBE metadata parser exists", "xbox_portable_read_metadata" in portable),
    ("portable UTF-16 title conversion exists", "xbox_decode_title" in portable),
    ("portable DMI media-ID extraction exists", "xbox_parse_media_id" in portable),
    ("portable result handoff begins for ISO", "xbox_portable_result_begin (dmp, dmp -> outfile_iso, '1')" in dumper),
    ("portable result handoff begins for XISO", "xbox_portable_result_begin (dmp, dmp -> outfile_xiso, '2')" in dumper),
    ("portable result handoff captures metadata", "xbox_portable_result_capture_metadata (dmp)" in dumper),
    ("portable result handoff finalizes hashes", "result -> hashes_complete = 1" in dumper),
    ("Linux default XBE-derived filename is resolved", "xbox_portable_resolve_output_path" in dumper),
    ("Windows challenge-drive copied path remains guarded", bool(re.search(r"#ifdef WIN32\s+if \(disc_is_xbox_challenge_drive", dumper))),
]

failed = False
for label, ok in checks:
    print(f"{'PASS' if ok else 'FAIL'}: {label}")
    failed |= not ok

if failed:
    raise SystemExit(1)

print("LINUX XBOX PORTABLE CONTRACT: PASS")
