Skip to content

Commit

Permalink
Warn when alias shadows external subcommand
Browse files Browse the repository at this point in the history
As per rust-lang#10049, we start by emitting a warning when an alias shadows an
existing external subcommand. After a transition period (duration not
specified), we will make this a hard error.
  • Loading branch information
basile-henry committed Nov 14, 2021
1 parent 3a3a071 commit 5bfd345
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
12 changes: 12 additions & 0 deletions src/bin/cargo/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,18 @@ fn expand_aliases(
}
(None, None) => {}
(_, Some(mut alias)) => {
// Check if this alias is shadowing an external subcommand
// (binary of the form `cargo-<subcommand>`)
// Currently this is only a warning, but after a transition period this will become
// a hard error.
if let Some(path) = super::find_external_subcommand(config, cmd) {
config.shell().warn(format!(
"user-defined alias `{}` is shadowing an external subcommand found at: `{}`",
cmd,
path.display(),
))?;
}

alias.extend(
args.values_of("")
.unwrap_or_default()
Expand Down
10 changes: 7 additions & 3 deletions src/bin/cargo/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,16 @@ fn list_commands(config: &Config) -> BTreeMap<String, CommandInfo> {
commands
}

fn execute_external_subcommand(config: &Config, cmd: &str, args: &[&str]) -> CliResult {
fn find_external_subcommand(config: &Config, cmd: &str) -> Option<PathBuf> {
let command_exe = format!("cargo-{}{}", cmd, env::consts::EXE_SUFFIX);
let path = search_directories(config)
search_directories(config)
.iter()
.map(|dir| dir.join(&command_exe))
.find(|file| is_executable(file));
.find(|file| is_executable(file))
}

fn execute_external_subcommand(config: &Config, cmd: &str, args: &[&str]) -> CliResult {
let path = find_external_subcommand(config, cmd);
let command = match path {
Some(command) => command,
None => {
Expand Down

0 comments on commit 5bfd345

Please sign in to comment.