From d5461d8d34fa235c4e743cc2b95d1cf59ba9650d Mon Sep 17 00:00:00 2001 From: Sede Soukossi <4968379+styvane@users.noreply.github.com> Date: Wed, 29 Jan 2025 23:15:05 +0100 Subject: [PATCH] Do not suggest --package when --backend is used, but --build-backend (#10958) ## Summary Closes #8743 ## Test Plan Snapshot tests --- crates/uv-cli/src/lib.rs | 10 ++++++++++ crates/uv/src/settings.rs | 1 + crates/uv/tests/it/init.rs | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index f0aaee9de..58edbdab9 100644 --- a/crates/uv-cli/src/lib.rs +++ b/crates/uv-cli/src/lib.rs @@ -2590,6 +2590,16 @@ 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, + required(false), + action(clap::ArgAction::SetTrue), + 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 f5984216b..0bf8db8f2 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 215fae5c3..c8514c7b1 100644 --- a/crates/uv/tests/it/init.rs +++ b/crates/uv/tests/it/init.rs @@ -2253,6 +2253,38 @@ 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: 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 + + 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<()> {