open_geocode/builder/
progress.rs1use std::time::Duration;
2
3use indicatif::{ProgressBar, ProgressStyle};
4
5pub(crate) fn byte_progress_bar(len: u64, message: &'static str) -> ProgressBar {
6 let progress = ProgressBar::new(len);
7 progress.set_style(
8 ProgressStyle::with_template(
9 "{msg:32} [{bar:40.cyan/blue}] {percent:>3}% {bytes}/{total_bytes} {bytes_per_sec} elapsed {elapsed_precise}",
10 )
11 .expect("valid byte progress template")
12 .progress_chars("=> "),
13 );
14 progress.set_message(message);
15 progress
16}
17
18pub(crate) fn item_progress_bar(len: u64, message: &'static str) -> ProgressBar {
19 let progress = ProgressBar::new(len);
20 progress.set_style(
21 ProgressStyle::with_template(
22 "{msg:32} [{bar:40.cyan/blue}] {percent:>3}% {pos}/{len} {per_sec} elapsed {elapsed_precise}",
23 )
24 .expect("valid item progress template")
25 .progress_chars("=> "),
26 );
27 progress.set_message(message);
28 progress
29}
30
31pub(crate) fn stage_progress(message: &'static str) -> ProgressBar {
32 let progress = ProgressBar::new_spinner();
33 progress.set_style(
34 ProgressStyle::with_template("{msg:32} {spinner} elapsed {elapsed_precise}")
35 .expect("valid stage progress template"),
36 );
37 progress.set_message(message);
38 progress.enable_steady_tick(Duration::from_millis(120));
39 progress
40}