"""Task: Resumable project setup (GitHub repo, initial commit, DB seed, preview enqueue).

Delegates to :mod:`src.workers.project_setup_pipeline`. The worker accepts either:

- ``(project_id,)`` — preferred; type, slug, workspace are loaded from the DB.
- ``(project_id, project_type, project_slug, workspace_id)`` — legacy arq payloads; extra args ignored.
"""
from __future__ import annotations

import structlog

from src.workers.project_setup_pipeline import run_project_setup

logger = structlog.get_logger()


async def setup_project_repo(ctx: dict, *args: str) -> dict:
    from uuid import UUID

    if len(args) == 1:
        project_id = UUID(args[0])
    elif len(args) == 4:
        project_id = UUID(args[0])
        logger.warning(
            "setup_project_repo_legacy_args",
            project_id=str(project_id),
            message="Ignoring trailing legacy args; load all fields from DB.",
        )
    else:
        raise ValueError(
            f"setup_project_repo expected 1 or 4 arguments, got {len(args)}: {args!r}"
        )

    return await run_project_setup(ctx, project_id)
