#!/usr/bin/env python3
"""Check that package.json version matches __version__.py."""

import json
import re
import sys
from pathlib import Path


def main():
    root = Path(__file__).parent.parent

    # Read __version__.py
    version_file = root / "src" / "local_deep_research" / "__version__.py"
    if not version_file.exists():
        print(f"ERROR: Version file not found: {version_file}")
        return 1

    try:
        version_content = version_file.read_text(encoding="utf-8")
    except OSError as e:
        print(f"ERROR: Could not read {version_file}: {e}")
        return 1

    match = re.search(r'__version__\s*=\s*["\']([^"\']+)["\']', version_content)
    if not match:
        print("ERROR: Could not parse __version__.py")
        return 1
    py_version = match.group(1)

    # Read package.json
    package_file = root / "package.json"
    if not package_file.exists():
        print(f"ERROR: package.json not found: {package_file}")
        return 1

    try:
        package_content = package_file.read_text(encoding="utf-8")
        package_data = json.loads(package_content)
    except OSError as e:
        print(f"ERROR: Could not read {package_file}: {e}")
        return 1
    except json.JSONDecodeError as e:
        print(f"ERROR: Invalid JSON in {package_file}: {e}")
        return 1

    js_version = package_data.get("version", "")
    if not js_version:
        print("ERROR: No 'version' field found in package.json")
        return 1

    if py_version != js_version:
        print("ERROR: Version mismatch!")
        print(f"  __version__.py: {py_version}")
        print(f"  package.json:   {js_version}")
        print()
        print("Fix by updating one of the files to match.")
        return 1

    return 0


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