From 95fe74e3958d73f4efe3289b97bed861d3735a29 Mon Sep 17 00:00:00 2001 From: Vladimir Rubin Date: Mon, 30 Dec 2024 19:04:01 +0200 Subject: [PATCH] feat: show amount of sorted files --- src/main.rs | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index bedea13..b60a1b8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ use std::{ io::{self, Write}, path::{Path, PathBuf}, process, - sync::OnceLock, + sync::{Arc, Mutex, OnceLock}, thread, }; @@ -140,14 +140,18 @@ fn main() { println!("Invalid answer"); } - println!("Selected: {}", actual_selection.join(", ")); - let mut thread_pool: Vec> = Vec::new(); + let total_files_sorted: Arc> = Arc::new(Mutex::new(0)); + for selection in actual_selection { + let tfs = Arc::clone(&total_files_sorted); let thread = thread::spawn(move || match sort_files(selection, recursive) { - Ok(_) => {} - Err(err) => eprintln!("{}", err), + Ok(files_sorted) => { + let mut num = tfs.lock().unwrap(); + *num += files_sorted + } + Err(err) => eprintln!("Error sorting files: {}", err), }); thread_pool.push(thread); @@ -156,9 +160,15 @@ fn main() { for thread in thread_pool { thread.join().unwrap(); } + + if *total_files_sorted.lock().unwrap() == 0 { + println!("No sortable files found!"); + } else { + println!("Sorted files: {}", total_files_sorted.lock().unwrap()); + } } -fn sort_files(selection: String, recursive: bool) -> Result<(), Box> { +fn sort_files(selection: String, recursive: bool) -> Result> { let search_path = CONFIG .get() .and_then(|config| config.sources.get(&selection)) @@ -192,7 +202,8 @@ fn sort_files(selection: String, recursive: bool) -> Result<(), Box, Option)], recursive: bool, - ) -> Result<(), Box> { + ) -> Result> { + let mut files_sorted: usize = 0; for entry in fs::read_dir(path)?.flatten() { let metadata = entry.metadata()?; @@ -204,17 +215,18 @@ fn sort_files(selection: String, recursive: bool) -> Result<(), Box