Skip to content

uv

repo_scaffold.workspace_member.providers.uv

uv workspace-member provider preserving the existing library workflow.

add_uv_member

add_uv_member(spec: WorkspaceMemberSpec) -> None

Create a Python library member with uv's native generator.

Source code in repo_scaffold/workspace_member/providers/uv.py
def add_uv_member(spec: WorkspaceMemberSpec) -> None:
    """Create a Python library member with uv's native generator."""
    if spec.member_type != "python-lib":
        raise click.ClickException(
            f"Unsupported uv member type '{spec.member_type}'. "
            "v1 supports python-lib."
        )
    if spec.member_path.exists():
        raise click.ClickException(
            f"❌ {spec.member_path.relative_to(spec.project_path)} already exists"
        )
    if spec.dry_run:
        click.echo(
            f"Would create uv python-lib: "
            f"{spec.member_path.relative_to(spec.project_path)}"
        )
        return

    cookiecutter(
        template=str(importlib.resources.files("repo_scaffold").joinpath(
            "templates", "workspace_members", "uv", "python-lib"
        )),
        output_dir=str(spec.member_path.parent),
        no_input=True,
        extra_context=_template_context(spec),
    )
    register_cog_member(spec)
    if not spec.no_install:
        subprocess.check_call(
            ["uv", "sync", "--all-packages", "--all-groups"],
            cwd=str(spec.project_path),
        )
    click.echo(f"✅ uv member '{spec.name}' added.")