From: Ian Jackson Date: Mon, 16 May 2022 00:25:52 +0000 (+0100) Subject: cli bundle progress: Collect local zipfile members in a vec X-Git-Tag: otter-1.1.0~85 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=f6a6ccbe37f76a80b6e55bc18d61782a93e4468d;p=otter.git cli bundle progress: Collect local zipfile members in a vec This will let us easily count them, which we want to do for progress reporting. Signed-off-by: Ian Jackson --- diff --git a/cli/usebundles.rs b/cli/usebundles.rs index 0f61bd76..b3901497 100644 --- a/cli/usebundles.rs +++ b/cli/usebundles.rs @@ -42,7 +42,8 @@ impl BundleForUpload { let f = File::open(&file).context("open")?; Self::prepare_open_file(&file, progress, f)? } else { - Self::prepare_from_dir(&file, progress, walk)? + let entries = walk.collect::,_>>()?; + Self::prepare_from_dir(&file, progress, entries)? } } @@ -84,16 +85,13 @@ impl BundleForUpload { } #[throws(AE)] - pub fn prepare_from_dir(dir: &str, progress: &mut termprogress::Nest, - walk: W) -> Self - where W: Iterator> - { + pub fn prepare_from_dir(dir: &str, progress: &mut termprogress::Nest, + entries: Vec) -> Self { let zipfile = tempfile::tempfile().context("create tmp zipfile")?; let zipfile = BufWriter::new(zipfile); let mut zipfile = zipfile::ZipWriter::new(zipfile); - for ent in walk { - let ent = ent?; + for ent in entries { if ent.file_type().is_dir() { continue } let tail = {