diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-02-29 21:54:04 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-02-29 21:54:04 +0100 |
commit | 4c9befdf02c38dfc00704556df13392357a115ae (patch) | |
tree | 9e5e82e75f3e13efbc99bf6e3465e8209a068391 | |
parent | 859e396ed10816dc7a10756c8b61283eab6a981d (diff) | |
parent | 34ea62397b9ba2a3e309ffc33ad8aa9df204aaee (diff) |
Merge branch 'update-indicatif' into master
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | bin/core/imag-diagnostics/Cargo.toml | 2 | ||||
-rw-r--r-- | bin/core/imag-diagnostics/src/lib.rs | 49 |
2 files changed, 27 insertions, 24 deletions
diff --git a/bin/core/imag-diagnostics/Cargo.toml b/bin/core/imag-diagnostics/Cargo.toml index a2174327..557e3f7d 100644 --- a/bin/core/imag-diagnostics/Cargo.toml +++ b/bin/core/imag-diagnostics/Cargo.toml @@ -17,7 +17,7 @@ homepage = "http://imag-pim.org" log = "0.4.6" toml = "0.5.1" toml-query = "0.9.2" -indicatif = "0.12.0" +indicatif = "0.14.0" failure = "0.1.5" resiter = "0.4.0" diff --git a/bin/core/imag-diagnostics/src/lib.rs b/bin/core/imag-diagnostics/src/lib.rs index 1b3ec62b..427abc67 100644 --- a/bin/core/imag-diagnostics/src/lib.rs +++ b/bin/core/imag-diagnostics/src/lib.rs @@ -57,7 +57,7 @@ use libimagentrylink::linkable::Linkable; use toml::Value; use toml_query::read::TomlValueReadExt; -use indicatif::{ProgressBar, ProgressStyle}; +use indicatif::{ProgressIterator, ProgressBar, ProgressStyle}; use failure::Fallible as Result; use failure::err_msg; use clap::App; @@ -116,21 +116,24 @@ impl ImagApplication for ImagDiagnostics { let tick_chars = get_config(&rt, "rt.progressticker_chars")?; let verbose = rt.cli().is_present("more-output"); - let style = if let Some(tick_chars) = tick_chars { - ProgressStyle::default_spinner().tick_chars(&tick_chars) - } else { - ProgressStyle::default_spinner() + let progressbar = { + let p = ProgressBar::new(100); + p.set_style({ + if let Some(tick_chars) = tick_chars { + ProgressStyle::default_spinner().tick_chars(&tick_chars) + } else { + ProgressStyle::default_spinner() + } + }); + p.set_message("Accumulating data"); + p }; - let spinner = ProgressBar::new_spinner(); - spinner.enable_steady_tick(100); - spinner.set_style(style); - spinner.set_message("Accumulating data"); - let diags = rt.store() .entries()? .into_get_iter() .map_inner_ok_or_else(|| err_msg("Unable to get entry")) + .progress_with(progressbar) .and_then_ok(|e| { let diag = Diagnostic::for_entry(&e); debug!("Diagnostic for '{:?}' = {:?}", e.get_location(), diag); @@ -139,16 +142,19 @@ impl ImagApplication for ImagDiagnostics { }) .collect::<Result<Vec<_>>>()?; - spinner.finish(); - let n = diags.len(); - let progress = ProgressBar::new(n as u64); - let style = if let Some(template) = template { - ProgressStyle::default_bar().template(&template) - } else { - ProgressStyle::default_bar() + let n = diags.len(); + let progressbar = { + let p = ProgressBar::new(n as u64); + p.set_style({ + if let Some(template) = template { + ProgressStyle::default_bar().template(&template) + } else { + ProgressStyle::default_bar() + } + }); + p.set_message("Calculating stats"); + p }; - progress.set_style(style); - progress.set_message("Calculating stats"); let mut version_counts : BTreeMap<String, usize> = BTreeMap::new(); let mut sum_header_sections = 0; @@ -161,7 +167,7 @@ impl ImagApplication for ImagDiagnostics { let mut num_links = 0; let mut max_links : Option<(usize, StoreId)> = None; - for diag in diags.iter() { + for diag in diags.iter().progress_with(progressbar) { sum_header_sections += diag.header_sections; sum_bytecount_content += diag.bytecount_content; sum_overall_byte_size += diag.overall_byte_size; @@ -192,11 +198,8 @@ impl ImagApplication for ImagDiagnostics { } } - progress.inc(1); } - progress.finish(); - let mut out = rt.stdout(); writeln!(out, "imag version {}", { env!("CARGO_PKG_VERSION") })?; |