#!/usr/bin/env python3
import argparse
import sys
import json
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]


def main() -> int:
    parser = argparse.ArgumentParser()
    parser.add_argument("--package", default="package.json")
    parser.add_argument("--max-scripts", type=int, default=12)
    args = parser.parse_args()

    pkg_path = ROOT / args.package
    if not pkg_path.exists():
        print(f"package.json not found: {pkg_path}")
        return 1

    try:
        pkg = json.loads(pkg_path.read_text(encoding="utf-8"))
    except Exception as e:
        print(f"Error parsing package.json: {e}")
        return 1

    scripts = pkg.get("scripts", {})
    if not isinstance(scripts, dict):
        print("Invalid scripts field in package.json")
        return 1

    script_count = len(scripts)
    print(f"Total package.json scripts: {script_count} (Limit: {args.max_scripts})")
    
    chained_script_count = 0
    for name, cmd in scripts.items():
        if any(char in cmd for char in ["&&", ";", "|"]):
            # Ignore ops:render if it contains chained command (if allowed as exception)
            # but the task says chained_script_count == 0, so let's check everything.
            print(f"Chained command detected in script '{name}': {cmd}")
            chained_script_count += 1

    if script_count > args.max_scripts:
        print(f"Validation FAILED: script count {script_count} exceeds limit of {args.max_scripts}")
        return 1

    if chained_script_count > 0:
        print(f"Validation FAILED: detected {chained_script_count} chained scripts")
        return 1

    print("Validation PASSED: package.json script budget satisfies constraints.")
    return 0


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