From: Aleksey Kladov Date: Wed, 7 Mar 2018 08:50:05 +0000 (+0300) Subject: Move git-checkout to clap X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~2^2~47^2~61 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=562af316ea17ddae43e49018c35d86c7164ba84e;p=cargo.git Move git-checkout to clap --- diff --git a/src/bin/cargo.rs b/src/bin/cargo.rs index ab9b31324..516c74772 100644 --- a/src/bin/cargo.rs +++ b/src/bin/cargo.rs @@ -89,7 +89,7 @@ fn main() { }; let is_clapified = ::std::env::args().any(|arg| match arg.as_ref() { - "build" | "bench" | "check" | "clean" | "doc" | "fetch" | "generate-lockfile" => true, + "build" | "bench" | "check" | "clean" | "doc" | "fetch" | "generate-lockfile" | "git-checkout" => true, _ => false }); @@ -124,7 +124,7 @@ macro_rules! each_subcommand{ // $mac!(doc); // $mac!(fetch); // $mac!(generate_lockfile); - $mac!(git_checkout); +// $mac!(git_checkout); $mac!(help); $mac!(init); $mac!(install); diff --git a/src/bin/cli/git_checkout.rs b/src/bin/cli/git_checkout.rs new file mode 100644 index 000000000..b926db969 --- /dev/null +++ b/src/bin/cli/git_checkout.rs @@ -0,0 +1,9 @@ +use super::utils::*; + +pub fn cli() -> App { + subcommand("git-checkout") + .about("Checkout a copy of a Git repository") + .arg(Arg::with_name("url").long("url").value_name("URL").required(true)) + .arg(Arg::with_name("reference").long("reference").value_name("REF").required(true)) + .arg_locked() +} diff --git a/src/bin/cli/mod.rs b/src/bin/cli/mod.rs index 9fdc5d897..ae2031776 100644 --- a/src/bin/cli/mod.rs +++ b/src/bin/cli/mod.rs @@ -7,11 +7,11 @@ use std::slice; use cargo; use clap::{AppSettings, Arg, ArgMatches}; -use cargo::{Config, CargoResult}; -use cargo::core::Workspace; +use cargo::{Config, CargoResult, CliError}; +use cargo::core::{Workspace, Source}; +use cargo::util::ToUrl; use cargo::util::important_paths::find_root_manifest_for_wd; use cargo::ops::{self, MessageFormat, Packages, CompileOptions, CompileMode}; -use cargo::CliError; pub fn do_main(config: &mut Config) -> Result<(), CliError> { @@ -194,11 +194,29 @@ pub fn do_main(config: &mut Config) -> Result<(), CliError> { ops::generate_lockfile(&ws)?; return Ok(()); } + ("git-checkout", Some(args)) => { + config_from_args(config, args)?; + + let url = args.value_of("url").unwrap().to_url()?; + let reference = args.value_of("reference").unwrap(); + + let reference = GitReference::Branch(reference.to_string()); + let source_id = SourceId::for_git(&url, reference)?; + + let mut source = GitSource::new(&source_id, config)?; + + source.update()?; + + return Ok(()); + } _ => return Ok(()) } } use self::utils::*; +use cargo::core::GitReference; +use cargo::core::SourceId; +use cargo::sources::GitSource; fn cli() -> App { let app = App::new("cargo") @@ -263,6 +281,7 @@ See 'cargo help ' for more information on a specific command. doc::cli(), fetch::cli(), generate_lockfile::cli(), + git_checkout::cli(), ]) ; app @@ -275,6 +294,7 @@ mod clean; mod doc; mod fetch; mod generate_lockfile; +mod git_checkout; // FIXME: let's just drop this subcommand? mod utils { use clap::{self, SubCommand, AppSettings};