From 97662a1abb69f7ddc060dbf70409478d21c21e0b Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Wed, 28 Oct 2020 18:04:08 +0100 Subject: Move progress bar setup to utility module Signed-off-by: Matthias Beyer --- src/util/progress.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/util/progress.rs (limited to 'src/util/progress.rs') diff --git a/src/util/progress.rs b/src/util/progress.rs new file mode 100644 index 0000000..5ddf383 --- /dev/null +++ b/src/util/progress.rs @@ -0,0 +1,35 @@ +use indicatif::*; + +pub struct ProgressBars { + pub root: MultiProgress, + pub release_loading: ProgressBar, + pub staging_loading: ProgressBar, + pub repo_loading: ProgressBar, + pub tree_building: ProgressBar, +} + +impl ProgressBars { + pub fn setup(max_packages: u64) -> Self { + fn bar(msg: &str, max_packages: u64) -> ProgressBar { + let b = ProgressBar::new(max_packages); + b.set_style({ + ProgressStyle::default_bar() + .template("[{elapsed_precise}] {pos:>3}/{len:>3} ({percent:>3}%): {bar} | {msg}") + }); + + b.set_message(msg); + b + } + + let root = MultiProgress::new(); + ProgressBars { + repo_loading: root.add(bar("Repository loading", max_packages)), + staging_loading: root.add(bar("Loading staging", max_packages)), + release_loading: root.add(bar("Loading releases", max_packages)), + tree_building: root.add(bar("Building package tree", max_packages)), + root, + } + } +} + + -- cgit v1.2.3