From: Aleksey Kladov Date: Sat, 10 Mar 2018 13:13:51 +0000 (+0300) Subject: Introduce command_prelude module X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~2^2~47^2~17 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=207a51fbb39df78ef4a143797ccea75c49767973;p=cargo.git Introduce command_prelude module --- diff --git a/src/bin/cli/bench.rs b/src/bin/cli/bench.rs index 5a84ff317..58a73b4ed 100644 --- a/src/bin/cli/bench.rs +++ b/src/bin/cli/bench.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; use clap::AppSettings; pub fn cli() -> App { diff --git a/src/bin/cli/build.rs b/src/bin/cli/build.rs index 99c66ae85..2d1bdd921 100644 --- a/src/bin/cli/build.rs +++ b/src/bin/cli/build.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("build").alias("b") diff --git a/src/bin/cli/check.rs b/src/bin/cli/check.rs index b77d7153d..2777f2317 100644 --- a/src/bin/cli/check.rs +++ b/src/bin/cli/check.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("check") diff --git a/src/bin/cli/clean.rs b/src/bin/cli/clean.rs index eafdb98b6..e23eac7ad 100644 --- a/src/bin/cli/clean.rs +++ b/src/bin/cli/clean.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("clean") diff --git a/src/bin/cli/doc.rs b/src/bin/cli/doc.rs index 9a567464d..ddf76081a 100644 --- a/src/bin/cli/doc.rs +++ b/src/bin/cli/doc.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("doc") diff --git a/src/bin/cli/fetch.rs b/src/bin/cli/fetch.rs index 611a2eb37..39b08ab93 100644 --- a/src/bin/cli/fetch.rs +++ b/src/bin/cli/fetch.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("fetch") diff --git a/src/bin/cli/generate_lockfile.rs b/src/bin/cli/generate_lockfile.rs index 438c43f2e..447aa023e 100644 --- a/src/bin/cli/generate_lockfile.rs +++ b/src/bin/cli/generate_lockfile.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("generate-lockfile") diff --git a/src/bin/cli/git_checkout.rs b/src/bin/cli/git_checkout.rs index 68250b971..90719066e 100644 --- a/src/bin/cli/git_checkout.rs +++ b/src/bin/cli/git_checkout.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("git-checkout") diff --git a/src/bin/cli/init.rs b/src/bin/cli/init.rs index 0006ac04a..a7038e0e0 100644 --- a/src/bin/cli/init.rs +++ b/src/bin/cli/init.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("init") diff --git a/src/bin/cli/install.rs b/src/bin/cli/install.rs index 5735da104..237e819ca 100644 --- a/src/bin/cli/install.rs +++ b/src/bin/cli/install.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("install") diff --git a/src/bin/cli/locate_project.rs b/src/bin/cli/locate_project.rs index c2cd7cd8b..ef18d30a6 100644 --- a/src/bin/cli/locate_project.rs +++ b/src/bin/cli/locate_project.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("locate-project") diff --git a/src/bin/cli/login.rs b/src/bin/cli/login.rs index 957bfe1c1..c5d77b373 100644 --- a/src/bin/cli/login.rs +++ b/src/bin/cli/login.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("login") diff --git a/src/bin/cli/metadata.rs b/src/bin/cli/metadata.rs index 702339832..7b407a9f2 100644 --- a/src/bin/cli/metadata.rs +++ b/src/bin/cli/metadata.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("metadata") diff --git a/src/bin/cli/mod.rs b/src/bin/cli/mod.rs index 411c289a0..78cf34184 100644 --- a/src/bin/cli/mod.rs +++ b/src/bin/cli/mod.rs @@ -2,9 +2,7 @@ extern crate clap; #[cfg(never)] extern crate cargo; -use std::slice; use std::io::{self, Read, BufRead}; -use std::path::PathBuf; use std::cmp::min; use std::fs::File; use std::collections::HashMap; @@ -13,15 +11,13 @@ use std::process; use clap::{AppSettings, Arg, ArgMatches}; use toml; -use cargo::{self, Config, CargoResult, CargoError, CliResult, CliError}; -use cargo::core::{Workspace, Source, SourceId, GitReference, Package}; +use cargo::{self, Config, CargoError, CliResult, CliError}; +use cargo::core::{Source, SourceId, GitReference, Package}; use cargo::util::{ToUrl, CargoResultExt}; -use cargo::util::important_paths::find_root_manifest_for_wd; -use cargo::ops::{self, MessageFormat, Packages, CompileOptions, CompileMode, VersionControl, - OutputMetadataOptions, NewOptions}; +use cargo::ops::{self, CompileMode, OutputMetadataOptions}; use cargo::sources::{GitSource, RegistrySource}; -use self::utils::*; +use self::command_prelude::*; use std::collections::BTreeSet; use std::env; use std::fs; @@ -732,8 +728,16 @@ mod verify_project; mod version; mod yank; -mod utils { - use clap::{self, SubCommand, AppSettings}; +mod command_prelude { + use std::path::PathBuf; + + use clap::{self, SubCommand, AppSettings, ArgMatches}; + use cargo::{Config, CargoResult}; + use cargo::core::Workspace; + use cargo::ops::{CompileMode, CompileOptions, CompileFilter, Packages, MessageFormat, + VersionControl, NewOptions}; + use cargo::util::important_paths::find_root_manifest_for_wd; + pub use clap::Arg; pub type App = clap::App<'static, 'static>; @@ -895,142 +899,141 @@ a global configuration.") AppSettings::DontCollapseArgsInUsage, ]) } -} -fn values(args: &ArgMatches, name: &str) -> Vec { - args.values_of(name).unwrap_or_default() - .map(|s| s.to_string()) - .collect() -} + pub fn values(args: &ArgMatches, name: &str) -> Vec { + args.values_of(name).unwrap_or_default() + .map(|s| s.to_string()) + .collect() + } -fn config_from_args(config: &mut Config, args: &ArgMatches) -> CargoResult<()> { - let color = args.value_of("color").map(|s| s.to_string()); - config.configure( - args.occurrences_of("verbose") as u32, - if args.is_present("quite") { Some(true) } else { None }, - &color, - args.is_present("frozen"), - args.is_present("locked"), - &args.values_of_lossy("unstable-features").unwrap_or_default(), - ) -} + pub fn config_from_args(config: &mut Config, args: &ArgMatches) -> CargoResult<()> { + let color = args.value_of("color").map(|s| s.to_string()); + config.configure( + args.occurrences_of("verbose") as u32, + if args.is_present("quite") { Some(true) } else { None }, + &color, + args.is_present("frozen"), + args.is_present("locked"), + &args.values_of_lossy("unstable-features").unwrap_or_default(), + ) + } -fn root_manifest_from_args(config: &Config, args: &ArgMatches) -> CargoResult { - let manifest_path = args.value_of("manifest-path").map(|s| s.to_string()); - find_root_manifest_for_wd(manifest_path, config.cwd()) -} + pub fn root_manifest_from_args(config: &Config, args: &ArgMatches) -> CargoResult { + let manifest_path = args.value_of("manifest-path").map(|s| s.to_string()); + find_root_manifest_for_wd(manifest_path, config.cwd()) + } -fn workspace_from_args<'a>(config: &'a Config, args: &ArgMatches) -> CargoResult> { - let root = root_manifest_from_args(config, args)?; - Workspace::new(&root, config) -} + pub fn workspace_from_args<'a>(config: &'a Config, args: &ArgMatches) -> CargoResult> { + let root = root_manifest_from_args(config, args)?; + Workspace::new(&root, config) + } -fn jobs_from_args(args: &ArgMatches) -> CargoResult> { //FIXME: validation - let jobs = match args.value_of("jobs") { - None => None, - Some(jobs) => Some(jobs.parse::().map_err(|_| { - clap::Error::value_validation_auto( - format!("could not parse `{}` as a number", jobs) - ) - })?) - }; - Ok(jobs) -} + pub fn jobs_from_args(args: &ArgMatches) -> CargoResult> { //FIXME: validation + let jobs = match args.value_of("jobs") { + None => None, + Some(jobs) => Some(jobs.parse::().map_err(|_| { + clap::Error::value_validation_auto( + format!("could not parse `{}` as a number", jobs) + ) + })?) + }; + Ok(jobs) + } -fn compile_options_from_args<'a>( - config: &'a Config, - args: &'a ArgMatches<'a>, - mode: CompileMode, -) -> CargoResult> { - let spec = Packages::from_flags( - args.is_present("all"), - values(args, "exclude"), - values(args, "package"), - )?; - - let message_format = match args.value_of("message-format") { - None => MessageFormat::Human, - Some(f) => { - if f.eq_ignore_ascii_case("json") { - MessageFormat::Json - } else if f.eq_ignore_ascii_case("human") { - MessageFormat::Human - } else { - panic!("Impossible message format: {:?}", f) + pub fn compile_options_from_args<'a>( + config: &'a Config, + args: &'a ArgMatches<'a>, + mode: CompileMode, + ) -> CargoResult> { + let spec = Packages::from_flags( + args.is_present("all"), + values(args, "exclude"), + values(args, "package"), + )?; + + let message_format = match args.value_of("message-format") { + None => MessageFormat::Human, + Some(f) => { + if f.eq_ignore_ascii_case("json") { + MessageFormat::Json + } else if f.eq_ignore_ascii_case("human") { + MessageFormat::Human + } else { + panic!("Impossible message format: {:?}", f) + } } - } - }; - - let opts = CompileOptions { - config, - jobs: jobs_from_args(args)?, - target: args.value_of("target"), - features: values(args, "features"), - all_features: args.is_present("all-features"), - no_default_features: args.is_present("no-default-features"), - spec, - mode, - release: args.is_present("release"), - filter: ops::CompileFilter::new(args.is_present("lib"), - values(args, "bin"), args.is_present("bins"), - values(args, "test"), args.is_present("tests"), - values(args, "example"), args.is_present("examples"), - values(args, "bench"), args.is_present("benches"), - args.is_present("all-targets")), - message_format, - target_rustdoc_args: None, - target_rustc_args: None, - }; - Ok(opts) -} + }; -fn compile_options_from_args_for_single_package<'a>( - config: &'a Config, - args: &'a ArgMatches<'a>, - mode: CompileMode, -) -> CargoResult> { - let mut compile_opts = compile_options_from_args(config, args, mode)?; - compile_opts.spec = Packages::Packages(values(args, "package")); - Ok(compile_opts) -} + let opts = CompileOptions { + config, + jobs: jobs_from_args(args)?, + target: args.value_of("target"), + features: values(args, "features"), + all_features: args.is_present("all-features"), + no_default_features: args.is_present("no-default-features"), + spec, + mode, + release: args.is_present("release"), + filter: CompileFilter::new(args.is_present("lib"), + values(args, "bin"), args.is_present("bins"), + values(args, "test"), args.is_present("tests"), + values(args, "example"), args.is_present("examples"), + values(args, "bench"), args.is_present("benches"), + args.is_present("all-targets")), + message_format, + target_rustdoc_args: None, + target_rustc_args: None, + }; + Ok(opts) + } -fn new_opts_from_args<'a>(args: &'a ArgMatches<'a>, path: &'a str) -> CargoResult> { - let vcs = args.value_of("vcs").map(|vcs| match vcs { - "git" => VersionControl::Git, - "hg" => VersionControl::Hg, - "pijul" => VersionControl::Pijul, - "fossil" => VersionControl::Fossil, - "none" => VersionControl::NoVcs, - vcs => panic!("Impossible vcs: {:?}", vcs), - }); - NewOptions::new(vcs, - args.is_present("bin"), - args.is_present("lib"), - path, - args.value_of("name")) -} + pub fn compile_options_from_args_for_single_package<'a>( + config: &'a Config, + args: &'a ArgMatches<'a>, + mode: CompileMode, + ) -> CargoResult> { + let mut compile_opts = compile_options_from_args(config, args, mode)?; + compile_opts.spec = Packages::Packages(values(args, "package")); + Ok(compile_opts) + } + + pub fn new_opts_from_args<'a>(args: &'a ArgMatches<'a>, path: &'a str) -> CargoResult> { + let vcs = args.value_of("vcs").map(|vcs| match vcs { + "git" => VersionControl::Git, + "hg" => VersionControl::Hg, + "pijul" => VersionControl::Pijul, + "fossil" => VersionControl::Fossil, + "none" => VersionControl::NoVcs, + vcs => panic!("Impossible vcs: {:?}", vcs), + }); + NewOptions::new(vcs, + args.is_present("bin"), + args.is_present("lib"), + path, + args.value_of("name")) + } -fn registry_from_args(config: &Config, args: &ArgMatches) -> CargoResult> { - match args.value_of("registry") { - Some(registry) => { - if !config.cli_unstable().unstable_options { - return Err(format_err!("registry option is an unstable feature and \ + pub fn registry_from_args(config: &Config, args: &ArgMatches) -> CargoResult> { + match args.value_of("registry") { + Some(registry) => { + if !config.cli_unstable().unstable_options { + return Err(format_err!("registry option is an unstable feature and \ requires -Zunstable-options to use.").into()); + } + Ok(Some(registry.to_string())) } - Ok(Some(registry.to_string())) + None => Ok(None), } - None => Ok(None), } -} -fn index_from_args(config: &Config, args: &ArgMatches) -> CargoResult> { - // TODO: Deprecated - // remove once it has been decided --host can be removed - // We may instead want to repurpose the host flag, as - // mentioned in this issue - // https://github.com/rust-lang/cargo/issues/4208 - let msg = "The flag '--host' is no longer valid. + pub fn index_from_args(config: &Config, args: &ArgMatches) -> CargoResult> { + // TODO: Deprecated + // remove once it has been decided --host can be removed + // We may instead want to repurpose the host flag, as + // mentioned in this issue + // https://github.com/rust-lang/cargo/issues/4208 + let msg = "The flag '--host' is no longer valid. Previous versions of Cargo accepted this flag, but it is being deprecated. The flag is being renamed to 'index', as the flag @@ -1040,12 +1043,13 @@ This will soon become a hard error, so it's either recommended to update to a fixed version or contact the upstream maintainer about this warning."; - let index = match args.value_of("host") { - Some(host) => { - config.shell().warn(&msg)?; - Some(host.to_string()) - } - None => args.value_of("index").map(|s| s.to_string()) - }; - Ok(index) + let index = match args.value_of("host") { + Some(host) => { + config.shell().warn(&msg)?; + Some(host.to_string()) + } + None => args.value_of("index").map(|s| s.to_string()) + }; + Ok(index) + } } diff --git a/src/bin/cli/new.rs b/src/bin/cli/new.rs index 48a8fdf6e..f912c9581 100644 --- a/src/bin/cli/new.rs +++ b/src/bin/cli/new.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("new") diff --git a/src/bin/cli/owner.rs b/src/bin/cli/owner.rs index a65d0f290..4f1b87003 100644 --- a/src/bin/cli/owner.rs +++ b/src/bin/cli/owner.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("owner") diff --git a/src/bin/cli/package.rs b/src/bin/cli/package.rs index 83f4e8143..e8215c77c 100644 --- a/src/bin/cli/package.rs +++ b/src/bin/cli/package.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("package") diff --git a/src/bin/cli/pkgid.rs b/src/bin/cli/pkgid.rs index 81ade796a..764a5cb4b 100644 --- a/src/bin/cli/pkgid.rs +++ b/src/bin/cli/pkgid.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("pkgid") diff --git a/src/bin/cli/publish.rs b/src/bin/cli/publish.rs index f52f0ee59..0b0d08546 100644 --- a/src/bin/cli/publish.rs +++ b/src/bin/cli/publish.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("publish") diff --git a/src/bin/cli/read_manifest.rs b/src/bin/cli/read_manifest.rs index 29d3aa5de..c13e7e180 100644 --- a/src/bin/cli/read_manifest.rs +++ b/src/bin/cli/read_manifest.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("read-manifest") diff --git a/src/bin/cli/run.rs b/src/bin/cli/run.rs index f9145b33e..85ad63dbd 100644 --- a/src/bin/cli/run.rs +++ b/src/bin/cli/run.rs @@ -1,6 +1,6 @@ use clap::AppSettings; -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("run").alias("r") diff --git a/src/bin/cli/rustc.rs b/src/bin/cli/rustc.rs index 01315415b..bdc5aa185 100644 --- a/src/bin/cli/rustc.rs +++ b/src/bin/cli/rustc.rs @@ -1,6 +1,6 @@ use clap::AppSettings; -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("rustc") diff --git a/src/bin/cli/rustdoc.rs b/src/bin/cli/rustdoc.rs index 8570b029e..9f8d164bf 100644 --- a/src/bin/cli/rustdoc.rs +++ b/src/bin/cli/rustdoc.rs @@ -1,6 +1,6 @@ use clap::AppSettings; -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("rustdoc") diff --git a/src/bin/cli/search.rs b/src/bin/cli/search.rs index 2bcfe193c..9e9f727f1 100644 --- a/src/bin/cli/search.rs +++ b/src/bin/cli/search.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("search") diff --git a/src/bin/cli/test.rs b/src/bin/cli/test.rs index 7a6dd3a6a..d4ae77fa9 100644 --- a/src/bin/cli/test.rs +++ b/src/bin/cli/test.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; use clap::AppSettings; pub fn cli() -> App { diff --git a/src/bin/cli/uninstall.rs b/src/bin/cli/uninstall.rs index 2c407326d..0ad50d3f5 100644 --- a/src/bin/cli/uninstall.rs +++ b/src/bin/cli/uninstall.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("uninstall") diff --git a/src/bin/cli/update.rs b/src/bin/cli/update.rs index e5ae0b230..2b2e82ed5 100644 --- a/src/bin/cli/update.rs +++ b/src/bin/cli/update.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("update") diff --git a/src/bin/cli/verify_project.rs b/src/bin/cli/verify_project.rs index 530ce844d..890de1154 100644 --- a/src/bin/cli/verify_project.rs +++ b/src/bin/cli/verify_project.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("verify-project") diff --git a/src/bin/cli/version.rs b/src/bin/cli/version.rs index 535228a0d..75c2a9f06 100644 --- a/src/bin/cli/version.rs +++ b/src/bin/cli/version.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("version") diff --git a/src/bin/cli/yank.rs b/src/bin/cli/yank.rs index d5e12356b..41a418554 100644 --- a/src/bin/cli/yank.rs +++ b/src/bin/cli/yank.rs @@ -1,4 +1,4 @@ -use super::utils::*; +use super::command_prelude::*; pub fn cli() -> App { subcommand("yank")