diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index f0aaee9de4992..58edbdab92aa9 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 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..c8514c7b14cff 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<()> {