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::<Result<Vec<_>,_>>()?;
}
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)?;
}
},
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)
#[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")?
///
/// 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<String>,
+ 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;
}
}