Auto merge of #12788 - hi-rustin:rustin-patch-short-Z, r=epage

Add unsupported lowercase `-z` flag suggestion for `-Z` flag
This commit is contained in:
bors 2023-10-10 01:33:31 +00:00
commit c97c906b79
3 changed files with 51 additions and 25 deletions

View File

@ -2,7 +2,7 @@ use anyhow::{anyhow, Context as _};
use cargo::core::shell::Shell;
use cargo::core::{features, CliUnstable};
use cargo::{self, drop_print, drop_println, CargoResult, CliResult, Config};
use clap::{Arg, ArgMatches};
use clap::{builder::UnknownArgumentValueParser, Arg, ArgMatches};
use itertools::Itertools;
use std::collections::HashMap;
use std::ffi::OsStr;
@ -618,15 +618,29 @@ See '<cyan,bold>cargo help</> <cyan><<command>></>' for more information on a sp
.help_heading(heading::MANIFEST_OPTIONS)
.global(true),
)
.arg_config()
.arg(
Arg::new("unstable-features")
.help("Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details")
.short('Z')
.value_name("FLAG")
.action(ArgAction::Append)
.global(true),
)
// Better suggestion for the unsupported short config flag.
.arg( Arg::new("unsupported-short-config-flag")
.help("")
.short('c')
.value_parser(UnknownArgumentValueParser::suggest_arg("--config"))
.action(ArgAction::SetTrue)
.global(true)
.hide(true))
.arg(multi_opt("config", "KEY=VALUE", "Override a configuration value").global(true))
// Better suggestion for the unsupported lowercase unstable feature flag.
.arg( Arg::new("unsupported-lowercase-unstable-feature-flag")
.help("")
.short('z')
.value_parser(UnknownArgumentValueParser::suggest_arg("-Z"))
.action(ArgAction::SetTrue)
.global(true)
.hide(true))
.arg(Arg::new("unstable-features")
.help("Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details")
.short('Z')
.value_name("FLAG")
.action(ArgAction::Append)
.global(true))
.subcommands(commands::builtin())
}

View File

@ -378,21 +378,6 @@ pub trait CommandExt: Sized {
)
._arg(unsupported_short_arg)
}
fn arg_config(self) -> Self {
let unsupported_short_arg = {
let value_parser = UnknownArgumentValueParser::suggest_arg("--config");
Arg::new("unsupported-short-config-flag")
.help("")
.short('c')
.value_parser(value_parser)
.action(ArgAction::SetTrue)
.global(true)
.hide(true)
};
self._arg(unsupported_short_arg)
._arg(multi_opt("config", "KEY=VALUE", "Override a configuration value").global(true))
}
}
impl CommandExt for Command {

View File

@ -244,6 +244,33 @@ fn cargo_compile_directory_not_cwd() {
assert!(p.bin("foo").is_file());
}
#[cargo_test]
fn cargo_compile_with_unsupported_short_unstable_feature_flag() {
let p = project()
.file("Cargo.toml", &basic_bin_manifest("foo"))
.file("src/foo.rs", &main_file(r#""i am foo""#, &[]))
.file(".cargo/config.toml", &"")
.build();
p.cargo("-zunstable-options -C foo build")
.masquerade_as_nightly_cargo(&["chdir"])
.cwd(p.root().parent().unwrap())
.with_stderr(
"\
error: unexpected argument '-z' found
tip: a similar argument exists: '-Z'
Usage: cargo [+toolchain] [OPTIONS] [COMMAND]
cargo [+toolchain] [OPTIONS] -Zscript <MANIFEST_RS> [ARGS]...
For more information, try '--help'.
",
)
.with_status(1)
.run();
}
#[cargo_test]
fn cargo_compile_directory_not_cwd_with_invalid_config() {
let p = project()