bookdata/io/
mod.rs

1use indicatif::ProgressBar;
2use std::fs;
3use std::io::{BufRead, BufReader, Result as IOResult};
4use std::path::Path;
5
6pub mod background;
7pub mod compress;
8pub mod ext;
9pub mod lines;
10pub mod object;
11
12pub use compress::open_gzin_progress;
13pub use lines::LineProcessor;
14pub use object::ObjectWriter;
15
16/// Open a file as a buffered reader with a progress bar.
17pub fn open_progress(path: &Path, pb: ProgressBar) -> IOResult<impl BufRead> {
18    let name = path.file_name().unwrap().to_string_lossy();
19    let read = fs::File::open(path)?;
20    pb.set_length(read.metadata()?.len());
21    pb.set_prefix(name.to_string());
22
23    let read = pb.wrap_read(read);
24    let read = BufReader::new(read);
25    Ok(read)
26}