mirror of
https://github.com/rust-lang/cargo
synced 2024-10-13 03:02:45 +00:00
fix(cli): Suggest fix for scripts that look like external subcommands
This commit is contained in:
parent
40331900ae
commit
c51ea384b0
|
@ -178,11 +178,19 @@ fn execute_external_subcommand(config: &Config, cmd: &str, args: &[&OsStr]) -> C
|
||||||
let command = match path {
|
let command = match path {
|
||||||
Some(command) => command,
|
Some(command) => command,
|
||||||
None => {
|
None => {
|
||||||
|
let script_suggestion = if config.cli_unstable().script
|
||||||
|
&& std::path::Path::new(cmd).is_file()
|
||||||
|
{
|
||||||
|
let sep = std::path::MAIN_SEPARATOR;
|
||||||
|
format!("\n\tTo run the file `{cmd}`, provide a relative path like `.{sep}{cmd}`")
|
||||||
|
} else {
|
||||||
|
"".to_owned()
|
||||||
|
};
|
||||||
let err = if cmd.starts_with('+') {
|
let err = if cmd.starts_with('+') {
|
||||||
anyhow::format_err!(
|
anyhow::format_err!(
|
||||||
"no such command: `{cmd}`\n\n\t\
|
"no such command: `{cmd}`\n\n\t\
|
||||||
Cargo does not handle `+toolchain` directives.\n\t\
|
Cargo does not handle `+toolchain` directives.\n\t\
|
||||||
Did you mean to invoke `cargo` through `rustup` instead?",
|
Did you mean to invoke `cargo` through `rustup` instead?{script_suggestion}",
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
let suggestions = list_commands(config);
|
let suggestions = list_commands(config);
|
||||||
|
@ -191,7 +199,7 @@ fn execute_external_subcommand(config: &Config, cmd: &str, args: &[&OsStr]) -> C
|
||||||
anyhow::format_err!(
|
anyhow::format_err!(
|
||||||
"no such command: `{cmd}`{did_you_mean}\n\n\t\
|
"no such command: `{cmd}`{did_you_mean}\n\n\t\
|
||||||
View all installed commands with `cargo --list`\n\t\
|
View all installed commands with `cargo --list`\n\t\
|
||||||
Find a package to install `{cmd}` with `cargo search cargo-{cmd}`",
|
Find a package to install `{cmd}` with `cargo search cargo-{cmd}`{script_suggestion}",
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -109,6 +109,7 @@ error: no such command: `echo`
|
||||||
|
|
||||||
<tab>View all installed commands with `cargo --list`
|
<tab>View all installed commands with `cargo --list`
|
||||||
<tab>Find a package to install `echo` with `cargo search cargo-echo`
|
<tab>Find a package to install `echo` with `cargo search cargo-echo`
|
||||||
|
<tab>To run the file `echo`, provide a relative path like `./echo`
|
||||||
",
|
",
|
||||||
)
|
)
|
||||||
.run();
|
.run();
|
||||||
|
|
Loading…
Reference in a new issue