"""Generate renderer manifests from Retention Studio mechanism explainers."""

from __future__ import annotations

import argparse
import json
import sys
from pathlib import Path

PROJECT_ROOT = Path(__file__).resolve().parents[1]
if str(PROJECT_ROOT) not in sys.path:
    sys.path.insert(0, str(PROJECT_ROOT))

from autoshorts.mechanism_pipeline import build_mechanism_shot_plan
from autoshorts.render_manifest import write_render_manifests


def main() -> None:
    parser = argparse.ArgumentParser(description="Generate mechanism render manifests.")
    parser.add_argument("--explainers", default="data/retention_studio/mechanism_explainers.json")
    parser.add_argument("--out", default="data/render_manifests/mechanism_pilots")
    parser.add_argument("--title-contains", default=None)
    args = parser.parse_args()

    explainers = json.loads(Path(args.explainers).read_text(encoding="utf-8"))
    if args.title_contains:
        needle = args.title_contains.lower()
        explainers = [item for item in explainers if needle in item["title"].lower()]

    plans = [build_mechanism_shot_plan(explainer) for explainer in explainers]
    paths = write_render_manifests(plans, Path(args.out))
    print(f"Generated {len(paths)} mechanism render manifests in {args.out}")
    for path in paths:
        print(path)


if __name__ == "__main__":
    main()
