From a1c943923c414f76dbda44dc6d143da480fab53b Mon Sep 17 00:00:00 2001 From: figsoda Date: Sun, 14 Aug 2022 12:24:41 +0800 Subject: [PATCH 1/3] refac: simplify smart_unpack to remove redundant code and make clippy happy --- src/commands/decompress.rs | 50 ++++++++++++-------------------------- 1 file changed, 15 insertions(+), 35 deletions(-) diff --git a/src/commands/decompress.rs b/src/commands/decompress.rs index 21bae91be..bdfde344d 100644 --- a/src/commands/decompress.rs +++ b/src/commands/decompress.rs @@ -50,17 +50,8 @@ pub fn decompress_file( { let zip_archive = zip::ZipArchive::new(reader)?; let files = if let ControlFlow::Continue(files) = smart_unpack( - Box::new(move |output_dir| { - let mut progress = Progress::new_accessible_aware(total_input_size, true, None); - crate::archive::zip::unpack_archive( - zip_archive, - output_dir, - progress - .as_mut() - .map(Progress::display_handle) - .unwrap_or(&mut io::stdout()), - ) - }), + |output_dir, progress| crate::archive::zip::unpack_archive(zip_archive, output_dir, progress), + total_input_size, output_dir, &output_file_path, question_policy, @@ -130,17 +121,8 @@ pub fn decompress_file( } Tar => { if let ControlFlow::Continue(files) = smart_unpack( - Box::new(move |output_dir| { - let mut progress = Progress::new_accessible_aware(total_input_size, true, None); - crate::archive::tar::unpack_archive( - reader, - output_dir, - progress - .as_mut() - .map(Progress::display_handle) - .unwrap_or(&mut io::stdout()), - ) - }), + |output_dir, progress| crate::archive::tar::unpack_archive(reader, output_dir, progress), + total_input_size, output_dir, &output_file_path, question_policy, @@ -165,17 +147,8 @@ pub fn decompress_file( let zip_archive = zip::ZipArchive::new(io::Cursor::new(vec))?; if let ControlFlow::Continue(files) = smart_unpack( - Box::new(move |output_dir| { - let mut progress = Progress::new_accessible_aware(total_input_size, true, None); - crate::archive::zip::unpack_archive( - zip_archive, - output_dir, - progress - .as_mut() - .map(Progress::display_handle) - .unwrap_or(&mut io::stdout()), - ) - }), + |output_dir, progress| crate::archive::zip::unpack_archive(zip_archive, output_dir, progress), + total_input_size, output_dir, &output_file_path, question_policy, @@ -207,7 +180,8 @@ pub fn decompress_file( /// output_dir named after the archive (given by `output_file_path`) /// Note: This functions assumes that `output_dir` exists fn smart_unpack( - unpack_fn: Box crate::Result>>, + unpack_fn: impl FnOnce(&Path, &mut dyn Write) -> crate::Result>, + total_input_size: u64, output_dir: &Path, output_file_path: &Path, question_policy: QuestionPolicy, @@ -222,7 +196,13 @@ fn smart_unpack( ); // unpack the files - let files = unpack_fn(temp_dir_path)?; + let files = unpack_fn( + temp_dir_path, + Progress::new_accessible_aware(total_input_size, true, None) + .as_mut() + .map(Progress::display_handle) + .unwrap_or(&mut io::stdout()), + )?; let root_contains_only_one_element = fs::read_dir(&temp_dir_path)?.count() == 1; if root_contains_only_one_element { From 996e597c1fce01f01684142fe5f1ab3c7a22ad60 Mon Sep 17 00:00:00 2001 From: figsoda Date: Sun, 14 Aug 2022 12:26:28 +0800 Subject: [PATCH 2/3] fix: apply clippy lint --- src/utils/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 276fd74b3..2df393671 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -31,7 +31,7 @@ mod utf8 { pub fn get_invalid_utf8_paths(paths: &[PathBuf]) -> Vec<&PathBuf> { paths .iter() - .filter_map(|path| is_invalid_utf8(path).then(|| path)) + .filter_map(|path| is_invalid_utf8(path).then_some(path)) .collect() } } From e9ae3114ba962398061b014a9e8ddb606d768c62 Mon Sep 17 00:00:00 2001 From: figsoda Date: Sun, 14 Aug 2022 12:32:17 +0800 Subject: [PATCH 3/3] chore: add CHANGELOG.md entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bce74361..145fcc6f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -140,6 +140,7 @@ Categories Used: - CI: Check the format with Github Action [\#126](https://github.com/ouch-org/ouch/pull/126) ([dcariotti](https://github.com/dcariotti)) - CI: Rewrite [\#135](https://github.com/ouch-org/ouch/pull/135) ([figsoda](https://github.com/figsoda)) - Improving error messages and removing dead error treatment code [\#140](https://github.com/ouch-org/ouch/pull/140) ([marcospb19](https://github.com/marcospb19)) +- Apply clippy lints and simplify smart_unpack [\#267](https://github.com/ouch-org/ouch/pull/267) ([figsoda](https://github.com/figsoda)) ### Tweaks