From 7ce5f98c7d8ae6992f67dfdcec05bc4dc96fdb2f Mon Sep 17 00:00:00 2001 From: Sede Soukossi <4968379+styvane@users.noreply.github.com> Date: Sat, 25 Jan 2025 14:55:35 +0100 Subject: [PATCH 1/2] Do not suggest --package when --backend is used, but --backend-build --- crates/uv-cli/src/lib.rs | 9 +++++++++ crates/uv/src/settings.rs | 1 + crates/uv/tests/it/init.rs | 30 ++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index ae3fa565f6e06..9782bb2f8162f 100644 --- a/crates/uv-cli/src/lib.rs +++ b/crates/uv-cli/src/lib.rs @@ -2615,6 +2615,15 @@ pub struct InitArgs { #[arg(long, value_enum, conflicts_with_all=["script", "no_package"])] pub build_backend: Option, + /// Invalid option name for build backend. + #[arg( + long, + value_enum, + value_parser=clap::builder::UnknownArgumentValueParser::suggest_arg("--build-backend"), + hide(true) + )] + backend: Option, + /// Do not create a `README.md` file. #[arg(long)] pub no_readme: bool, diff --git a/crates/uv/src/settings.rs b/crates/uv/src/settings.rs index f5984216bdf14..0bf8db8f22f64 100644 --- a/crates/uv/src/settings.rs +++ b/crates/uv/src/settings.rs @@ -227,6 +227,7 @@ impl InitSettings { no_pin_python, no_workspace, python, + .. } = args; let kind = match (app, lib, script) { diff --git a/crates/uv/tests/it/init.rs b/crates/uv/tests/it/init.rs index 215fae5c3a5b9..cda93b17841af 100644 --- a/crates/uv/tests/it/init.rs +++ b/crates/uv/tests/it/init.rs @@ -2253,6 +2253,36 @@ fn init_failure() -> Result<()> { Ok(()) } +#[test] +fn init_failure_with_invalid_option_named_backend() { + let context = TestContext::new("3.12"); + + uv_snapshot!(context.filters(), context.init().arg("foo").arg("--backend"), @r###" + success: false + exit_code: 2 + ----- stdout ----- + + ----- stderr ----- + error: a value is required for '--backend ' but none was supplied + + For more information, try '--help'. + "###); + + uv_snapshot!(context.filters(), context.init().arg("foo").arg("--backend").arg("maturin"), @r###" + success: false + exit_code: 2 + ----- stdout ----- + + ----- stderr ----- + error: unexpected argument '--backend ' found + + tip: a similar argument exists: '--build-backend' + + Usage: uv init [OPTIONS] [PATH] + + For more information, try '--help'. + "###); +} #[test] #[cfg(feature = "git")] fn init_git() -> Result<()> { From c32dd8e19204d0f3430b4f88e38e2619f2961f6e Mon Sep 17 00:00:00 2001 From: Sede Soukossi <4968379+styvane@users.noreply.github.com> Date: Wed, 29 Jan 2025 20:10:05 +0100 Subject: [PATCH 2/2] Make --backend a flag --- crates/uv-cli/src/lib.rs | 5 +++-- crates/uv/tests/it/init.rs | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index 9782bb2f8162f..58a25c39db26e 100644 --- a/crates/uv-cli/src/lib.rs +++ b/crates/uv-cli/src/lib.rs @@ -2618,11 +2618,12 @@ pub struct InitArgs { /// Invalid option name for build backend. #[arg( long, - value_enum, + required(false), + action(clap::ArgAction::SetTrue), value_parser=clap::builder::UnknownArgumentValueParser::suggest_arg("--build-backend"), hide(true) )] - backend: Option, + backend: Option, /// Do not create a `README.md` file. #[arg(long)] diff --git a/crates/uv/tests/it/init.rs b/crates/uv/tests/it/init.rs index cda93b17841af..c8514c7b14cff 100644 --- a/crates/uv/tests/it/init.rs +++ b/crates/uv/tests/it/init.rs @@ -2256,25 +2256,27 @@ fn init_failure() -> Result<()> { #[test] fn init_failure_with_invalid_option_named_backend() { let context = TestContext::new("3.12"); - uv_snapshot!(context.filters(), context.init().arg("foo").arg("--backend"), @r###" success: false exit_code: 2 ----- stdout ----- ----- stderr ----- - error: a value is required for '--backend ' but none was supplied + error: unexpected argument '--backend' found + + tip: a similar argument exists: '--build-backend' + + Usage: uv init [OPTIONS] [PATH] For more information, try '--help'. "###); - uv_snapshot!(context.filters(), context.init().arg("foo").arg("--backend").arg("maturin"), @r###" success: false exit_code: 2 ----- stdout ----- ----- stderr ----- - error: unexpected argument '--backend ' found + error: unexpected argument '--backend' found tip: a similar argument exists: '--build-backend'