From 6c1887674a103de50a4250e83d38db06ade8dc99 Mon Sep 17 00:00:00 2001 From: Lea Fairbanks Date: Sun, 31 Oct 2021 13:46:25 -0600 Subject: [PATCH] add cli override support --- src/drivers.rs | 2 +- src/helpers.rs | 4 ++-- src/lib.rs | 11 +++++++---- src/main.rs | 24 ++++++++++++++++++++---- 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/drivers.rs b/src/drivers.rs index 9270de59..03de5aa9 100644 --- a/src/drivers.rs +++ b/src/drivers.rs @@ -18,7 +18,7 @@ fn find_version<'a, V: Iterator>(requirement: &str, version_iter: // Filter for matching versions let mut filtered: Vec<_> = version_iter.filter(|v| { // Remove leading `v` for git tags - let ver_str = match v.strip_prefix("s") { + let ver_str = match v.strip_prefix('s') { Some(v) => v, None => v, }; diff --git a/src/helpers.rs b/src/helpers.rs index dce5c9f3..efd659f9 100644 --- a/src/helpers.rs +++ b/src/helpers.rs @@ -57,7 +57,7 @@ pub fn extract, P: AsRef>(source: S, fmt: PkgFmt, path: P) tar.unpack(path)?; }, - PkgFmt::Tgz => { + PkgFmt::Tgz | PkgFmt::TarGz => { // Extract to install dir debug!("Decompressing from tgz archive '{:?}' to `{:?}`", source.as_ref(), path.as_ref()); @@ -129,7 +129,7 @@ pub fn get_install_path>(install_path: Option

) -> Option, + + /// Override Cargo.toml package manifest pkg-fmt. + #[structopt(long)] + pkg_fmt: Option, + + /// Override Cargo.toml package manifest bin-dir. + #[structopt(long)] + bin_dir: Option, } @@ -72,6 +84,11 @@ async fn main() -> Result<(), anyhow::Error> { // Load options let opts = Options::from_iter(args.iter()); + let cli_overrides = PkgOverride { + pkg_url: opts.pkg_url.clone(), + pkg_fmt: opts.pkg_fmt, + bin_dir: opts.bin_dir.clone(), + }; // Setup logging let mut log_config = ConfigBuilder::new(); @@ -98,7 +115,7 @@ async fn main() -> Result<(), anyhow::Error> { let package = manifest.package.unwrap(); let (mut meta, binaries) = ( - package.metadata.map(|m| m.binstall ).flatten().unwrap_or(PkgMeta::default()), + package.metadata.map(|m| m.binstall ).flatten().unwrap_or_default(), manifest.bin, ); @@ -106,8 +123,7 @@ async fn main() -> Result<(), anyhow::Error> { if let Some(o) = meta.overrides.remove(&opts.target) { meta.merge(&o); } - - debug!("Found metadata: {:?}", meta); + meta.merge(&cli_overrides); // Generate context for URL interpolation let ctx = Context { @@ -175,7 +191,7 @@ async fn main() -> Result<(), anyhow::Error> { let _ = temp_dir.into_path(); } - if binaries.len() == 0 { + if binaries.is_empty() { error!("No binaries specified (or inferred from file system)"); return Err(anyhow::anyhow!("No binaries specified (or inferred from file system)")); }