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

import argparse
import json
import sys
from pathlib import Path


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

from services.pet_builder import export_fixture_build


def main() -> int:
    parser = argparse.ArgumentParser(description="Export public fixtures into traceable local PetBuild folders.")
    parser.add_argument("--output", default=str(ROOT / "outputs" / "pet_builds"))
    args = parser.parse_args()

    public_root = ROOT / "tests" / "fixtures" / "public"
    output_root = Path(args.output)
    build_dirs = [export_fixture_build(path, output_root) for path in sorted(public_root.iterdir()) if path.is_dir()]
    print(
        json.dumps(
            {
                "status": "ok",
                "builds": [
                    {
                        "build_dir": str(path.relative_to(ROOT)),
                        "manifest": str((path / "manifest.json").relative_to(ROOT)),
                        "validation": str((path / "validation.json").relative_to(ROOT)),
                        "contact_sheet": str((path / "qa" / "contact-sheet.html").relative_to(ROOT)),
                    }
                    for path in build_dirs
                ],
            },
            ensure_ascii=False,
            indent=2,
        )
    )
    return 0


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