"""Generate renderer-ready JSON manifests for selected AutoShortsBot scripts."""

from __future__ import annotations

import argparse
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.growth_plan import load_testbatch
from autoshorts.render_manifest import write_render_manifests
from autoshorts.shot_planner import build_shot_plan
from autoshorts.voiceover_finalizer import finalize_voiceover

DEFAULT_SELECTED_IDS = ["ai-004", "ai-005", "attention-002"]


def main() -> None:
    parser = argparse.ArgumentParser(description="Generate renderer manifest JSON files.")
    parser.add_argument("--batch", default="data/drafts/testbatch_002.json")
    parser.add_argument("--out", default="data/render_manifests/testbatch_002_top3")
    parser.add_argument("--ids", nargs="*", default=DEFAULT_SELECTED_IDS)
    args = parser.parse_args()

    batch = load_testbatch(Path(args.batch))
    selected = set(args.ids)
    plans = [
        build_shot_plan(finalize_voiceover(idea))
        for idea in batch.get("ideas", [])
        if idea["id"] in selected
    ]
    paths = write_render_manifests(plans, Path(args.out))

    print(f"Generated {len(paths)} render manifests in {args.out}")
    for path in paths:
        print(path)


if __name__ == "__main__":
    main()
