From: Aleksey Kladov Date: Thu, 8 Mar 2018 19:24:16 +0000 (+0300) Subject: Support external subcommands X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~2^2~47^2~34 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=81ce3e1bef64a9eeb3f7c8fc27bcfbd743bd63f2;p=cargo.git Support external subcommands --- diff --git a/src/bin/cargo.rs b/src/bin/cargo.rs index 716fddec2..725339037 100644 --- a/src/bin/cargo.rs +++ b/src/bin/cargo.rs @@ -223,8 +223,8 @@ fn execute(flags: Flags, config: &mut Config) -> CliResult { } None => args, }; - - execute_external_subcommand(config, &args[1], &args) + unimplemented!() +// execute_external_subcommand(config, &args[1], &args) } fn try_execute_builtin_command(config: &mut Config, args: &[String]) -> Option { @@ -283,7 +283,7 @@ fn find_closest(config: &Config, cmd: &str) -> Option { filtered.get(0).map(|slot| slot.1.clone()) } -fn execute_external_subcommand(config: &Config, cmd: &str, args: &[String]) -> CliResult { +fn execute_external_subcommand(config: &Config, cmd: &str, args: &[&str]) -> CliResult { let command_exe = format!("cargo-{}{}", cmd, env::consts::EXE_SUFFIX); let path = search_directories(config) .iter() diff --git a/src/bin/cli/mod.rs b/src/bin/cli/mod.rs index 23b76fb23..40bfe09b8 100644 --- a/src/bin/cli/mod.rs +++ b/src/bin/cli/mod.rs @@ -506,6 +506,11 @@ pub fn do_main(config: &mut Config) -> Result<(), CliError> { registry)?; Ok(()) } + (external, Some(args)) => { + let mut ext_args: Vec<&str> = vec![external]; + ext_args.extend(args.values_of("").unwrap_or_default()); + super::execute_external_subcommand(config, external, &ext_args) + } _ => Ok(()) } } @@ -518,6 +523,7 @@ fn cli() -> App { AppSettings::UnifiedHelpMessage, AppSettings::DeriveDisplayOrder, AppSettings::VersionlessSubcommands, + AppSettings::AllowExternalSubcommands, ]) .about("Rust's package manager") .arg( diff --git a/tests/testsuite/cargo_command.rs b/tests/testsuite/cargo_command.rs index 58c842a4a..59c5c5d24 100644 --- a/tests/testsuite/cargo_command.rs +++ b/tests/testsuite/cargo_command.rs @@ -164,7 +164,6 @@ fn override_cargo_home() { } #[test] -#[ignore] fn cargo_subcommand_env() { use cargotest::support::cargo_exe;