From 1fc3b8535ee76c7e386fd97732f7a56209188085 Mon Sep 17 00:00:00 2001 From: kerthcet Date: Tue, 21 Apr 2026 01:20:32 +0100 Subject: [PATCH 1/2] add speed at the end Signed-off-by: kerthcet --- src/downloader/huggingface.rs | 4 ++-- src/downloader/progress.rs | 26 +++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/downloader/huggingface.rs b/src/downloader/huggingface.rs index 0e16a3b..c6e3e53 100644 --- a/src/downloader/huggingface.rs +++ b/src/downloader/huggingface.rs @@ -117,8 +117,8 @@ impl Downloader for HuggingFaceDownloader { if cached_file_path.exists() { debug!("File {} found in cache, showing as complete", filename); - // Create progress bar and mark as instantly complete - let mut file_progress = progress_manager_clone.create_file_progress(&filename); + // Create progress bar for cached file (no speed display) + let mut file_progress = progress_manager_clone.create_cached_file_progress(&filename); let file_size = cached_file_path.metadata().map(|m| m.len()).unwrap_or(0); file_progress.init(file_size); file_progress.update(file_size); diff --git a/src/downloader/progress.rs b/src/downloader/progress.rs index 69f3f8d..533e364 100644 --- a/src/downloader/progress.rs +++ b/src/downloader/progress.rs @@ -22,6 +22,7 @@ pub struct DownloadProgressManager { multi_progress: Arc, total_size: Arc, style: ProgressStyle, + cached_style: ProgressStyle, } impl DownloadProgressManager { @@ -30,7 +31,7 @@ impl DownloadProgressManager { let multi_progress = Arc::new(MultiProgress::new()); let template = format!( - "{{msg:<{width}}} [{{elapsed_precise}}] {{bar:60.white}} {{bytes}}/{{total_bytes}}", + "{{msg:<{width}}} [{{elapsed_precise}}] {{bar:60.white}} {{bytes}}/{{total_bytes}} {{bytes_per_sec}}", width = max_filename_len ); let style = ProgressStyle::default_bar() @@ -38,10 +39,21 @@ impl DownloadProgressManager { .unwrap() .progress_chars("▇▆▅▄▃▂▁ "); + // Cached file style without speed + let cached_template = format!( + "{{msg:<{width}}} [{{elapsed_precise}}] {{bar:60.white}} {{bytes}}/{{total_bytes}}", + width = max_filename_len + ); + let cached_style = ProgressStyle::default_bar() + .template(&cached_template) + .unwrap() + .progress_chars("▇▆▅▄▃▂▁ "); + Self { multi_progress, total_size: Arc::new(AtomicU64::new(0)), style, + cached_style, } } @@ -57,6 +69,18 @@ impl DownloadProgressManager { } } + /// Create a new progress bar for a cached file (no speed display) + pub fn create_cached_file_progress(&self, filename: &str) -> FileProgress { + let pb = self.multi_progress.add(ProgressBar::hidden()); + pb.set_style(self.cached_style.clone()); + pb.set_message(filename.to_string()); + + FileProgress { + pb, + total_size: Arc::clone(&self.total_size), + } + } + /// Get the total accumulated download size pub fn total_downloaded_bytes(&self) -> u64 { self.total_size.load(Ordering::Relaxed) From 83b7d2dacfa05d3e5b75867768d2804f889c9de2 Mon Sep 17 00:00:00 2001 From: kerthcet Date: Tue, 21 Apr 2026 01:30:33 +0100 Subject: [PATCH 2/2] fix lint Signed-off-by: kerthcet --- src/downloader/huggingface.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/downloader/huggingface.rs b/src/downloader/huggingface.rs index c6e3e53..925cf7b 100644 --- a/src/downloader/huggingface.rs +++ b/src/downloader/huggingface.rs @@ -118,7 +118,8 @@ impl Downloader for HuggingFaceDownloader { debug!("File {} found in cache, showing as complete", filename); // Create progress bar for cached file (no speed display) - let mut file_progress = progress_manager_clone.create_cached_file_progress(&filename); + let mut file_progress = + progress_manager_clone.create_cached_file_progress(&filename); let file_size = cached_file_path.metadata().map(|m| m.len()).unwrap_or(0); file_progress.init(file_size); file_progress.update(file_size);