summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-02-29 21:54:04 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-02-29 21:54:04 +0100
commit4c9befdf02c38dfc00704556df13392357a115ae (patch)
tree9e5e82e75f3e13efbc99bf6e3465e8209a068391
parent859e396ed10816dc7a10756c8b61283eab6a981d (diff)
parent34ea62397b9ba2a3e309ffc33ad8aa9df204aaee (diff)
Merge branch 'update-indicatif' into master
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--bin/core/imag-diagnostics/Cargo.toml2
-rw-r--r--bin/core/imag-diagnostics/src/lib.rs49
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") })?;