From 386ee882ca50f855606325f4190f17ddf140e233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20M=2E=20Bezerra?= Date: Mon, 30 Jan 2023 03:43:26 -0300 Subject: [PATCH] take Criterion as self --- src/cli.rs | 10 +++++----- src/main.rs | 24 ++++++++++++++++-------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/cli.rs b/src/cli.rs index 75190b0..736792f 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -88,19 +88,19 @@ pub struct Args { } impl Args { - pub fn criterion(&self) -> Criterion { - match &self { + pub fn criterion(self) -> Criterion { + match self { _ if self.stamp => Criterion::Stamp, _ if self.file => Criterion::File, _ if self.installed => Criterion::Installed, - _ if !self.toolchains.is_empty() => Criterion::Toolchains(self.toolchains.clone()), + _ if !self.toolchains.is_empty() => Criterion::Toolchains(self.toolchains), Self { time: Some(time), .. - } => Criterion::Time(*time), + } => Criterion::Time(time), Self { maxsize: Some(size), .. - } => Criterion::MaxSize(*size), + } => Criterion::MaxSize(size), _ => unreachable!("guaranteed by clap ArgGroup"), } } diff --git a/src/main.rs b/src/main.rs index 68b8312..2dcf7a6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,7 +16,7 @@ mod fingerprint; mod stamp; mod util; -use self::cli::Criterion; +use self::cli::{Args, Criterion}; use self::fingerprint::{remove_not_built_with, remove_older_than, remove_older_until_fits}; use self::stamp::Timestamp; use self::util::format_bytes; @@ -132,15 +132,23 @@ fn metadata(path: &Path) -> Result { fn main() -> anyhow::Result<()> { let args = cli::parse(); - let criterion = args.criterion(); - let dry_run = args.dry_run; - setup_logging(args.verbose); + let Args { + ref path, + dry_run, + hidden, + recursive, + verbose, + .. + } = args; // Default to current invocation path. - let path = args - .path + let path = path + .clone() .unwrap_or_else(|| env::current_dir().expect("Failed to get current directory")); + let criterion = args.criterion(); + setup_logging(verbose); + if let Criterion::Stamp = criterion { debug!("Writing timestamp file in: {:?}", path); return Timestamp::new() @@ -148,8 +156,8 @@ fn main() -> anyhow::Result<()> { .context("Failed to write timestamp file"); } - let paths = if args.recursive { - find_cargo_projects(&path, args.hidden) + let paths = if recursive { + find_cargo_projects(&path, hidden) } else { let metadata = metadata(&path).context(format!( "Failed to gather metadata for {:?}",