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.")
|