From 3ce9927e2bcd802f54951a17c5de28de5123dd0a Mon Sep 17 00:00:00 2001 From: Nbiba Bedis Date: Mon, 20 Dec 2021 11:17:49 +0100 Subject: [PATCH] Show progress when using list --tree --- src/list.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/list.rs b/src/list.rs index a3d7596..c8bd8ab 100644 --- a/src/list.rs +++ b/src/list.rs @@ -1,12 +1,10 @@ //! Implementation of the 'list' command, print list of files in an archive -use std::{ - io::Write, - path::{Path, PathBuf}, -}; +use std::path::{Path, PathBuf}; + +use indicatif::{ProgressBar, ProgressStyle}; use self::tree::Tree; -use crate::info; /// Options controlling how archive contents should be listed #[derive(Debug, Clone, Copy)] @@ -35,14 +33,26 @@ pub fn list_files( println!("Archive: {}", archive.display()); 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 .into_iter() .map(|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) }) .collect::>()?; + drop(pb); tree.print(); } else { for file in files {