#!/usr/bin/env python3
"""Pre-commit hook: validate wet_run ↔ Fiction cross-project links.

Runs verify_story_links.py on staged changes to ensure no broken
mission.source or game_mission_id references. Lightweight: only checks
the orphan count without running full test suite.

Install:
    cp scripts/git-hooks/pre-commit .git/hooks/pre-commit
    chmod +x .git/hooks/pre-commit

Bypass:
    git commit --no-verify
"""
from __future__ import annotations

import subprocess
import sys
from pathlib import Path

REPO_ROOT = Path(__file__).resolve().parents[3]
SCRIPT = REPO_ROOT / "prototype/scripts/verify_story_links.py"


def main() -> int:
    if not SCRIPT.exists():
        print(f"WARN: {SCRIPT} not found; skipping cross-project check")
        return 0

    # Run only the JSON output to check orphan count
    result = subprocess.run(
        ["uv", "run", "python", str(SCRIPT), "--json"],
        capture_output=True,
        text=True,
        cwd=str(REPO_ROOT),
    )
    if result.returncode != 0:
        # Non-zero returncode = orphan detected (intentional after Phase I)
        # Show summary for developer awareness
        import json

        try:
            data = json.loads(result.stdout)
            issues = data.get("issues", {})
            orphans = issues.get("game_mission_id_orphans", 0)
            blocking = issues.get("mission_sources_blocking", 0)
            if orphans or blocking:
                print(
                    f"WARN: cross-project orphans: "
                    f"{orphans} Fiction→mission orphans, "
                    f"{blocking} mission→Fiction blocking"
                )
                print("Run: uv run python scripts/verify_story_links.py")
        except (ValueError, KeyError):
            pass
        # Don't block commit (informational only)
    return 0


if __name__ == "__main__":
    sys.exit(main())