Support aliases

This commit is contained in:
Aleksey Kladov 2018-03-08 23:06:29 +03:00
parent 6783272a82
commit 93875b88da
2 changed files with 17 additions and 9 deletions

View File

@ -13,7 +13,7 @@ use std::process;
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;
@ -23,7 +23,7 @@ use cargo::sources::{GitSource, RegistrySource};
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();
@ -43,7 +43,12 @@ pub fn do_main(config: &mut Config) -> Result<(), CliError> {
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)?;
@ -509,10 +514,17 @@ pub fn do_main(config: &mut Config) -> Result<(), CliError> {
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(())
}

View File

@ -2,7 +2,6 @@ use cargotest::support::{project, execs, basic_bin_manifest};
use hamcrest::{assert_that};
#[test]
#[ignore]
fn alias_incorrect_config_type() {
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
@ -42,7 +41,6 @@ fn alias_default_config_overrides_config() {
}
#[test]
#[ignore]
fn alias_config() {
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
@ -62,7 +60,6 @@ fn alias_config() {
}
#[test]
#[ignore]
fn alias_list_test() {
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
@ -83,7 +80,6 @@ fn alias_list_test() {
}
#[test]
#[ignore]
fn alias_with_flags_config() {
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))