"""Task: Build a project at a given revision.

Uses the framework-specific preview adapter to install deps and build.
"""
import structlog

logger = structlog.get_logger()


async def run_build(ctx: dict, project_id: str, revision_id: str, project_type: str, repo_path: str) -> dict:
    from src.domain.previews.adapters import get_adapter

    adapter = get_adapter(project_type)

    try:
        artifact_path = await adapter.install_deps(repo_path)
        build_path = await adapter.build(artifact_path)
        logger.info("build_completed", project_id=project_id, build_path=build_path)
        return {"status": "completed", "build_path": build_path}
    except Exception as e:
        logger.error("build_failed", project_id=project_id, error=str(e))
        raise
