Refactor: Update main for progress bar

This commit is contained in:
andy.boot
2023-01-13 00:11:28 +00:00
parent 31eb650fbe
commit 400ff513f4
3 changed files with 17 additions and 38 deletions
+3 -3
View File
@@ -32,8 +32,8 @@ pub struct WalkData<'a> {
pub by_filecount: bool, pub by_filecount: bool,
pub ignore_hidden: bool, pub ignore_hidden: bool,
pub follow_links: bool, pub follow_links: bool,
pub progress_config: Option<&'a Arc<PConfig>>, pub progress_config: Option<Arc<PConfig>>,
pub progress_data: Option<&'a Arc<PAtomicInfo>>, pub progress_data: Option<Arc<PAtomicInfo>>,
} }
pub fn walk_it(dirs: HashSet<PathBuf>, walk_data: WalkData) -> (Vec<Node>, bool) { pub fn walk_it(dirs: HashSet<PathBuf>, walk_data: WalkData) -> (Vec<Node>, bool) {
@@ -44,7 +44,7 @@ pub fn walk_it(dirs: HashSet<PathBuf>, walk_data: WalkData) -> (Vec<Node>, bool)
.into_iter() .into_iter()
.filter_map(|d| { .filter_map(|d| {
let node = walk(d, &permissions_flag, &walk_data, 0)?; let node = walk(d, &permissions_flag, &walk_data, 0)?;
if let Some(data) = walk_data.progress_data { if let Some(data) = &walk_data.progress_data {
data.state.set(progress::Operation::PREPARING); data.state.set(progress::Operation::PREPARING);
} }
clean_inodes(node, &mut inodes, walk_data.use_apparent_size) clean_inodes(node, &mut inodes, walk_data.use_apparent_size)
+13 -14
View File
@@ -18,6 +18,7 @@ use progress::PIndicator;
use std::collections::HashSet; use std::collections::HashSet;
use std::io::BufRead; use std::io::BufRead;
use std::process; use std::process;
use std::sync::Arc;
use sysinfo::{System, SystemExt}; use sysinfo::{System, SystemExt};
use self::display::draw_it; use self::display::draw_it;
@@ -174,23 +175,21 @@ fn main() {
let disable_progress = config.get_disable_progress(&options); let disable_progress = config.get_disable_progress(&options);
let info_opt = if disable_progress { let info_indicator = if disable_progress {
None None
} else { } else {
let conf = PConfig { let conf = PConfig {
file_count_only: by_filecount, file_count_only: by_filecount, // recommend rm this
use_iso: config.get_iso(&options), use_iso: iso,
ignore_hidden, ignore_hidden, // can we rm this?
}; };
let info = PIndicator::spawn(conf); Some(PIndicator::spawn(conf))
Some(info)
}; };
let (info_conf, info_data) = if let Some(ref info) = info_opt { // Must be a cleaner way to do this
(Some(&info.config), Some(&info.data)) let (tmp_config, tmp_data) = match &info_indicator {
} else { Some(i) => (Some(Arc::clone(&i.config)), Some(Arc::clone(&i.data))),
(None, None) None => (None, None),
}; };
let walk_data = WalkData { let walk_data = WalkData {
@@ -202,8 +201,8 @@ fn main() {
by_filecount, by_filecount,
ignore_hidden, ignore_hidden,
follow_links, follow_links,
progress_config: info_conf, progress_config: tmp_config,
progress_data: info_data, progress_data: tmp_data,
}; };
let _rayon = init_rayon(); let _rayon = init_rayon();
@@ -225,7 +224,7 @@ fn main() {
} }
}; };
if let Some(info) = info_opt { if let Some(info) = info_indicator {
info.stop(); info.stop();
} }
+1 -21
View File
@@ -84,8 +84,6 @@ pub mod Operation {
#[derive(Default)] #[derive(Default)]
pub struct PAtomicInfo { pub struct PAtomicInfo {
pub file_number: AtomicU64Wrapper, pub file_number: AtomicU64Wrapper,
pub files_skipped: AtomicU64Wrapper,
pub directories_skipped: AtomicU64Wrapper,
pub total_file_size: TotalSize, pub total_file_size: TotalSize,
pub state: AtomicU8Wrapper, pub state: AtomicU8Wrapper,
pub current_path: ThreadStringWrapper, pub current_path: ThreadStringWrapper,
@@ -229,25 +227,7 @@ impl PIndicator {
}; };
let main_props_str = main_props.join(PROPS_SEPARATOR); let main_props_str = main_props.join(PROPS_SEPARATOR);
let base = format!("{} - {}", base, main_props_str); format!("{} - {}", base, main_props_str)
let ds = data2.directories_skipped.get();
let fs = data2.files_skipped.get();
if ds + fs != 0 {
let mut strs = Vec::new();
if fs != 0 {
strs.push(format_property!(fs, "file", "files"))
}
if ds != 0 {
strs.push(format_property!(ds, "directory", "directories"))
}
format!("{} ({} skipped)", base, strs.join(", "))
} else {
base
}
} }
Operation::PREPARING => { Operation::PREPARING => {
format_base!("Preparing") format_base!("Preparing")