Show progress when using list --tree

This commit is contained in:
Nbiba Bedis 2021-12-20 11:17:49 +01:00
parent 19081caa70
commit 3ce9927e2b

View File

@ -1,12 +1,10 @@
//! Implementation of the 'list' command, print list of files in an archive //! Implementation of the 'list' command, print list of files in an archive
use std::{ use std::path::{Path, PathBuf};
io::Write,
path::{Path, PathBuf}, use indicatif::{ProgressBar, ProgressStyle};
};
use self::tree::Tree; use self::tree::Tree;
use crate::info;
/// Options controlling how archive contents should be listed /// Options controlling how archive contents should be listed
#[derive(Debug, Clone, Copy)] #[derive(Debug, Clone, Copy)]
@ -35,14 +33,26 @@ pub fn list_files(
println!("Archive: {}", archive.display()); println!("Archive: {}", archive.display());
if list_options.tree { if list_options.tree {
let pb = if !crate::cli::ACCESSIBLE.get().unwrap() {
let template = "{wide_msg} [{elapsed_precise}] {spinner:.green}";
let pb = ProgressBar::new_spinner();
pb.set_style(ProgressStyle::default_bar().template(template));
Some(pb)
} else {
None
};
let tree: Tree = files let tree: Tree = files
.into_iter() .into_iter()
.map(|file| { .map(|file| {
let file = file?; let file = file?;
info!(inaccessible, "Processing file: {}", file.path.display()); if !crate::cli::ACCESSIBLE.get().unwrap() {
pb.as_ref().expect("exists").set_message(format!("Processing: {}", file.path.display()));
}
Ok(file) Ok(file)
}) })
.collect::<crate::Result<Tree>>()?; .collect::<crate::Result<Tree>>()?;
drop(pb);
tree.print(); tree.print();
} else { } else {
for file in files { for file in files {