summaryrefslogtreecommitdiff
path: root/cli/util/progress_bar/renderer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/util/progress_bar/renderer.rs')
-rw-r--r--cli/util/progress_bar/renderer.rs23
1 files changed, 15 insertions, 8 deletions
diff --git a/cli/util/progress_bar/renderer.rs b/cli/util/progress_bar/renderer.rs
index 64d533979..a83ceb333 100644
--- a/cli/util/progress_bar/renderer.rs
+++ b/cli/util/progress_bar/renderer.rs
@@ -34,7 +34,9 @@ pub trait ProgressBarRenderer: Send + Sync + std::fmt::Debug {
/// Indicatif style progress bar.
#[derive(Debug)]
-pub struct BarProgressBarRenderer;
+pub struct BarProgressBarRenderer {
+ pub display_human_download_size: bool,
+}
impl ProgressBarRenderer for BarProgressBarRenderer {
fn render(&self, data: ProgressData) -> String {
@@ -48,13 +50,16 @@ impl ProgressBarRenderer for BarProgressBarRenderer {
if total_size == 0 {
(String::new(), 0)
} else {
- let total_size_str = human_download_size(total_size, total_size);
- (
- format!(
- " {}/{}",
+ let (pos_str, total_size_str) = if self.display_human_download_size {
+ (
human_download_size(pos, total_size),
- total_size_str,
- ),
+ human_download_size(total_size, total_size),
+ )
+ } else {
+ (pos.to_string(), total_size.to_string())
+ };
+ (
+ format!(" {}/{}", pos_str, total_size_str,),
2 + total_size_str.len() * 2,
)
}
@@ -244,7 +249,9 @@ mod test {
#[test]
fn should_render_bar_progress() {
- let renderer = BarProgressBarRenderer;
+ let renderer = BarProgressBarRenderer {
+ display_human_download_size: true,
+ };
let mut data = ProgressData {
display_entries: vec![ProgressDataDisplayEntry {
prompt: ProgressMessagePrompt::Download,