diff --git a/src/downloader/huggingface.rs b/src/downloader/huggingface.rs index 0e16a3b..925cf7b 100644 --- a/src/downloader/huggingface.rs +++ b/src/downloader/huggingface.rs @@ -117,8 +117,9 @@ 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)