From d1abe567fabb22ea4f35e50cb1303e745dbff995 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 27 Aug 2024 18:24:36 -0400 Subject: [PATCH] Recommend [project] table in uv add for non-project directories --- crates/uv/src/commands/project/add.rs | 5 +++-- crates/uv/tests/edit.rs | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/uv/src/commands/project/add.rs b/crates/uv/src/commands/project/add.rs index 991d8694c78a2..26a0c4d44d084 100644 --- a/crates/uv/src/commands/project/add.rs +++ b/crates/uv/src/commands/project/add.rs @@ -201,13 +201,14 @@ pub(crate) async fn add( }; // For non-project workspace roots, allow dev dependencies, but nothing else. + // TODO(charlie): Automatically "upgrade" the project by adding a `[project]` table. if project.is_non_project() { match dependency_type { DependencyType::Production => { - bail!("Found a non-project workspace root; production dependencies are unsupported (instead, use: `{}`)", "uv add --dev".green()) + bail!("Project is missing a `[project]` table; add a `[project]` table to support production dependencies, or use `{}`", "uv add --dev".green()) } DependencyType::Optional(_) => { - bail!("Found a non-project workspace root; optional dependencies are unsupported (instead, use: `{}`)", "uv add --dev".green()) + bail!("Project is missing a `[project]` table; add a `[project]` table to support optional dependencies, or use `{}`", "uv add --dev".green()) } DependencyType::Dev => (), } diff --git a/crates/uv/tests/edit.rs b/crates/uv/tests/edit.rs index c22e21363a031..e56978056c9af 100644 --- a/crates/uv/tests/edit.rs +++ b/crates/uv/tests/edit.rs @@ -3530,7 +3530,7 @@ fn add_non_project() -> Result<()> { ----- stdout ----- ----- stderr ----- - error: Found a non-project workspace root; production dependencies are unsupported (instead, use: `uv add --dev`) + error: Project is missing a `[project]` table; add a `[project]` table to support production dependencies, or use `uv add --dev` "###); // Adding `iniconfig` as optional should fail, since virtual workspace roots don't support @@ -3541,7 +3541,7 @@ fn add_non_project() -> Result<()> { ----- stdout ----- ----- stderr ----- - error: Found a non-project workspace root; optional dependencies are unsupported (instead, use: `uv add --dev`) + error: Project is missing a `[project]` table; add a `[project]` table to support optional dependencies, or use `uv add --dev` "###); // Adding `iniconfig` as a dev dependency should succeed.