from __future__ import annotations

import argparse
from pathlib import Path

from autoshorts.cli.website_companion_common import DEFAULT_WEBSITE_ROOT, find_companion_spec, find_review_package, print_json
from autoshorts.website_companion import build_website_candidate, build_update_gate, load_json, resolve_review_video_path


def main() -> None:
    parser = argparse.ArgumentParser(description="Prepare and inspect a WebsiteCompanionPackage without writing website files.")
    parser.add_argument("candidate_id")
    parser.add_argument("--review-package")
    parser.add_argument("--companion-spec")
    parser.add_argument("--website-root", default=str(DEFAULT_WEBSITE_ROOT))
    args = parser.parse_args()

    review_path = find_review_package(args.candidate_id, args.review_package)
    spec_path = find_companion_spec(args.candidate_id, args.companion_spec)
    review = load_json(review_path)
    spec = load_json(spec_path)
    candidate = build_website_candidate(review, spec, review_package_path=review_path.resolve())
    video_path = resolve_review_video_path(review)
    gate = build_update_gate(review, candidate, video_path)
    website_root = Path(args.website_root).resolve()
    page_payload_json = website_root / "data" / "candidates" / f"{review.get('candidate_id') or candidate['id']}.json"

    print_json({
        "ok": True,
        "mode": "prepare",
        "candidate_id": args.candidate_id,
        "review_package": str(review_path),
        "companion_spec": str(spec_path),
        "website_root": str(website_root),
        "page_slug": candidate["slug"],
        "page_payload_json": str(page_payload_json),
        "video_path": str(video_path) if video_path else None,
        "update_gate": gate.to_dict(),
        "update_allowed": False,
        "note": "Preparation is read-only for the website. Use dry_run/export explicitly; no GitHub push is performed.",
    })


if __name__ == "__main__":
    main()
