#!/usr/bin/env python3
from __future__ import annotations

import argparse
import json
import subprocess
import sys
from pathlib import Path


def run(command: list[str]) -> None:
    subprocess.run(command, check=True)


def main() -> int:
    parser = argparse.ArgumentParser(description="Build dual XMind and NotebookLM source folders for a SKU portfolio.")
    parser.add_argument("--manifests", required=True, type=Path)
    parser.add_argument("--output-root", required=True, type=Path)
    parser.add_argument("--date", default="20260901")
    args = parser.parse_args()

    skill_root = Path(__file__).resolve().parents[2]
    xmind_builder = skill_root / "smart-canteen-sku-dual-xmind" / "scripts" / "build_dual_xmind.py"
    source_builder = skill_root / "smart-canteen-sku-notebooklm-infographic" / "scripts" / "build_notebook_sources.py"
    final_root = args.output_root / "01-最终呈现"
    notebook_root = args.output_root / "02-NotebookLM资料"
    (args.output_root / "03-历史版本").mkdir(parents=True, exist_ok=True)

    results = []
    for manifest in sorted(args.manifests.glob("*.json")):
        data = json.loads(manifest.read_text(encoding="utf-8"))
        folder = data.get("release_name", f"{data['sku']}_{data['name']}")
        final_dir = final_root / folder
        source_dir = notebook_root / folder
        run([sys.executable, str(xmind_builder), "--manifest", str(manifest), "--output-dir", str(final_dir), "--date", args.date])
        run([sys.executable, str(source_builder), "--manifest", str(manifest), "--output-dir", str(source_dir)])
        results.append({"sku": data["sku"], "final_dir": str(final_dir), "source_dir": str(source_dir)})
    print(json.dumps({"count": len(results), "results": results}, ensure_ascii=False, indent=2))
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
