use indicatif::{ProgressBar, ProgressStyle};
pub struct ProgressReporter {
bar: ProgressBar,
}
impl ProgressReporter {
pub fn new() -> Self {
let bar = ProgressBar::new(0);
let style = ProgressStyle::default_bar()
.template(
"{spinner:.green} [{elapsed_precise}] [{bar:40.cyan/blue}] {pos}/{len} files ({msg})",
)
.unwrap_or_else(|_| ProgressStyle::default_bar());
bar.set_style(style.progress_chars("#>-"));
Self { bar }
}
pub fn start_files(&self, total: u64) {
self.bar.set_length(total);
self.bar.set_message("Shredding in progress...");
}
pub fn inc_file_complete(&self) {
self.bar.inc(1);
}
pub fn finish(&self) {
self.bar
.finish_with_message("All targets securely destroyed.");
}
}
impl Default for ProgressReporter {
fn default() -> Self {
Self::new()
}
}