use clap::{AppSettings, Arg, ArgMatches};
use toml;
-use cargo::{self, Config, CargoResult, CargoError, CliError};
+use cargo::{self, Config, CargoResult, CargoError, CliResult, CliError};
use cargo::core::{Workspace, Source, SourceId, GitReference, Package};
use cargo::util::{ToUrl, CargoResultExt};
use cargo::util::important_paths::find_root_manifest_for_wd;
use self::utils::*;
-pub fn do_main(config: &mut Config) -> Result<(), CliError> {
+pub fn do_main(config: &mut Config) -> CliResult {
let args = cli().get_matches();
if args.is_present("version") {
let version = cargo::version();
return Ok(());
}
+ execte_subcommand(config, args)
+}
+
+fn execte_subcommand(config: &mut Config, args: ArgMatches) -> CliResult {
config_from_args(config, &args)?;
+
match args.subcommand() {
("bench", Some(args)) => {
let ws = workspace_from_args(config, args)?;
registry)?;
Ok(())
}
- (external, Some(args)) => {
- let mut ext_args: Vec<&str> = vec![external];
+ (cmd, Some(args)) => {
+ if let Some(mut alias) = super::aliased_command(config, cmd)? {
+ alias.extend(args.values_of("").unwrap_or_default().map(|s| s.to_string()));
+ let args = cli()
+ .setting(AppSettings::NoBinaryName)
+ .get_matches_from(alias);
+ return execte_subcommand(config, args);
+ }
+ let mut ext_args: Vec<&str> = vec![cmd];
ext_args.extend(args.values_of("").unwrap_or_default());
- super::execute_external_subcommand(config, external, &ext_args)
+ super::execute_external_subcommand(config, cmd, &ext_args)
}
_ => Ok(())
}
use hamcrest::{assert_that};
#[test]
-#[ignore]
fn alias_incorrect_config_type() {
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
}
#[test]
-#[ignore]
fn alias_config() {
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
}
#[test]
-#[ignore]
fn alias_list_test() {
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
}
#[test]
-#[ignore]
fn alias_with_flags_config() {
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))