From cd9ee2c4b2e371b8f9a33a633174eca8d3558908 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 16 May 2022 01:59:41 +0100 Subject: [PATCH] progress reporting: Nest: Provide and use more desc plumbing Signed-off-by: Ian Jackson --- cli/forgame.rs | 7 +++++-- cli/usebundles.rs | 4 ++-- support/termprogress.rs | 14 +++++++++----- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/cli/forgame.rs b/cli/forgame.rs index e8116459..9999715f 100644 --- a/cli/forgame.rs +++ b/cli/forgame.rs @@ -93,8 +93,10 @@ mod reset_game { let progress = ma.progressbar()?; let mut progress = termprogress::Nest::with_total (n_bundles as f32, progress); + let bundle_i_msg = |i| Some(format!("{}/{}", i, n_bundles)); - let local = args.bundles.into_iter().map(|file| { + let local = args.bundles.into_iter().enumerate().map(|(i,file)| { + progress.start_phase(0., bundle_i_msg(i), "preparing".into()); BundleForUpload::prepare(file, &mut progress) }).collect::,_>>()?; @@ -150,7 +152,8 @@ mod reset_game { } for (i, bundle) in local.into_iter().enumerate() { progress.start_phase(PROGFRAC_UPLOAD, - format!("{}/{}", i, n_bundles)); + bundle_i_msg(i), + "uploading".into()); bundle.upload(&ma, &mut chan, &mut progress)?; } }, diff --git a/cli/usebundles.rs b/cli/usebundles.rs index 197e2b2a..fdae7bfc 100644 --- a/cli/usebundles.rs +++ b/cli/usebundles.rs @@ -22,7 +22,7 @@ pub struct BundleForUpload { impl BundleForUpload { #[throws(AE)] pub fn prepare(file: String, progress: &mut termprogress::Nest) -> Self { - progress.start_phase(PROGFRAC_PREP, default()); + progress.start_phase(PROGFRAC_PREP, None, "inspecting".into()); let mut walk = WalkDir::new(&file) .same_file_system(true) @@ -50,7 +50,7 @@ impl BundleForUpload { #[throws(AE)] pub fn prepare_open_file(file: &str, progress: &mut termprogress::Nest, f: File) -> Self { - progress.start_phase(PROGFRAC_HASH, "hashing".into()); + progress.start_phase(PROGFRAC_HASH, None, "hashing".into()); let size = f .metadata().context("fstat bundle file")? diff --git a/support/termprogress.rs b/support/termprogress.rs index cc4072ca..8561d54b 100644 --- a/support/termprogress.rs +++ b/support/termprogress.rs @@ -192,19 +192,23 @@ impl Nest { /// /// From now on, when reports are issued, the inner phases are each /// mapped to the range "now" to "now" `frac` - pub fn start_phase(&mut self, frac: f32, desc_prefix: String) { + pub fn start_phase(&mut self, frac: f32, + phase_prefix: Option, + item_desc: Cow<'_,str>) { self.outer_phase_base += self.outer_phase_size; self.outer_phase_size = frac; + if let Some(p) = phase_prefix { + self.desc_prefix = p; + } + let f = self.outer_phase_base / self.outer_total; let value = progress::Value::Fraction { f }; self.actual_reporter.report(&ProgressInfo { - phase: progress::Count { desc: (&*desc_prefix).into(), value: value }, - item: progress::Count { desc: default(), value: default() }, + phase: progress::Count { desc: (&*self.desc_prefix).into(), value }, + item: progress::Count { desc: item_desc, value: default() }, }); - - self.desc_prefix = desc_prefix; } } -- 2.30.2