From 4e8d75379c4368aedaa833de5ffa0d60081afc59 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 7 Mar 2018 17:54:10 +0300 Subject: [PATCH] Move package to clap --- src/bin/cargo.rs | 4 ++-- src/bin/cli/mod.rs | 24 ++++++++++++++++++++++-- src/bin/cli/package.rs | 13 +++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 src/bin/cli/package.rs diff --git a/src/bin/cargo.rs b/src/bin/cargo.rs index a85c0e5c6..bb7e9319e 100644 --- a/src/bin/cargo.rs +++ b/src/bin/cargo.rs @@ -91,7 +91,7 @@ fn main() { let is_clapified = ::std::env::args().any(|arg| match arg.as_ref() { "build" | "bench" | "check" | "clean" | "doc" | "fetch" | "generate-lockfile" | "git-checkout" | "init" | "install" | "locate-project" | "login" | "metadata" | "new" | - "owner" => true, + "owner" | "package" => true, _ => false }); @@ -135,7 +135,7 @@ macro_rules! each_subcommand{ // $mac!(metadata); // $mac!(new); // $mac!(owner); - $mac!(package); +// $mac!(package); $mac!(pkgid); $mac!(publish); $mac!(read_manifest); diff --git a/src/bin/cli/mod.rs b/src/bin/cli/mod.rs index f394b3ae8..e2dbbb1fd 100644 --- a/src/bin/cli/mod.rs +++ b/src/bin/cli/mod.rs @@ -73,6 +73,10 @@ pub fn do_main(config: &mut Config) -> Result<(), CliError> { Workspace::new(&root, config) } + fn jobs_from_args(args: &ArgMatches) -> Option { //FIXME: validation + args.value_of("jobs").and_then(|v| v.parse().ok()) + } + fn compile_options_from_args<'a>( config: &'a Config, args: &'a ArgMatches<'a>, @@ -92,7 +96,7 @@ pub fn do_main(config: &mut Config) -> Result<(), CliError> { let opts = CompileOptions { config, - jobs: args.value_of("jobs").and_then(|v| v.parse().ok()), + jobs: jobs_from_args(args), target: args.value_of("target"), features: &values(args, "features"), all_features: args.is_present("all-features"), @@ -377,11 +381,25 @@ pub fn do_main(config: &mut Config) -> Result<(), CliError> { to_remove: args.values_of("remove") .map(|xs| xs.map(|s| s.to_string()).collect()), list: args.is_present("list"), - registry: args.value_of("registry").map(|s| s.to_string()), + registry, }; ops::modify_owners(config, &opts)?; return Ok(()); } + ("package", Some(args)) => { + let ws = workspace_from_args(config, args)?; + ops::package(&ws, &ops::PackageOpts { + config, + verify: !args.is_present("no-verify"), + list: args.is_present("list"), + check_metadata: !args.is_present("no-metadata"), + allow_dirty: args.is_present("allow-dirty"), + target: args.value_of("target"), + jobs: jobs_from_args(args), + registry: None, + })?; + return Ok(()); + } _ => return Ok(()) } } @@ -466,6 +484,7 @@ See 'cargo help ' for more information on a specific command. metadata::cli(), new::cli(), owner::cli(), + package::cli(), ]) ; app @@ -489,6 +508,7 @@ mod login; mod metadata; mod new; mod owner; +mod package; mod utils { use clap::{self, SubCommand, AppSettings}; diff --git a/src/bin/cli/package.rs b/src/bin/cli/package.rs new file mode 100644 index 000000000..83f4e8143 --- /dev/null +++ b/src/bin/cli/package.rs @@ -0,0 +1,13 @@ +use super::utils::*; + +pub fn cli() -> App { + subcommand("package") + .about("Assemble the local package into a distributable tarball") + .arg(opt("list", "Print files included in a package without making one").short("l")) + .arg(opt("no-verify", "Don't verify the contents by building them")) + .arg(opt("no-metadata", "Ignore warnings about a lack of human-usable metadata")) + .arg(opt("allow-dirty", "Allow dirty working directories to be packaged")) + .arg_target_triple("Build for the target triple") + .arg_manifest_path() + .arg_jobs() +} -- 2.30.2