Skip to content

Commit c1d077c

Browse files
committed
Fix never policy
1 parent cf8c3b0 commit c1d077c

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

src/compressor.rs

+9-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::options::{OutputFormat, OverwritePolicy};
22
use crate::scan_files::get_file_mime_type;
33
use caesium::parameters::CSParameters;
44
use caesium::{compress_in_memory, compress_to_size_in_memory, convert_in_memory, SupportedFileTypes};
5-
use indicatif::{ParallelProgressIterator, ProgressBar};
5+
use indicatif::ProgressBar;
66
use rayon::iter::ParallelIterator;
77
use rayon::prelude::IntoParallelRefIterator;
88
use std::error::Error;
@@ -58,8 +58,11 @@ pub fn start_compression(
5858
) -> Vec<CompressionResult> {
5959
input_files
6060
.par_iter()
61-
.progress_with(progress_bar)
62-
.map(|input_file| perform_compression(input_file, options, dry_run))
61+
.map(|input_file| {
62+
let result = perform_compression(input_file, options, dry_run);
63+
progress_bar.inc(1);
64+
result
65+
})
6366
.collect()
6467
}
6568

@@ -133,7 +136,7 @@ fn perform_compression(input_file: &PathBuf, options: &CompressionOptions, dry_r
133136
compression_result.output_path = output_full_path.display().to_string();
134137
let output_exists = output_full_path.exists();
135138

136-
if options.overwrite_policy == OverwritePolicy::Never {
139+
if options.overwrite_policy == OverwritePolicy::Never && output_exists {
137140
compression_result.status = CompressionStatus::Skipped;
138141
compression_result.compressed_size = original_file_size;
139142
compression_result.message = "File already exists, skipped due overwrite policy".to_string();
@@ -689,6 +692,7 @@ mod tests {
689692
);
690693

691694
options.quality = Some(100);
695+
692696
options.overwrite_policy = OverwritePolicy::Never;
693697
results = start_compression(&input_files, &options, progress_bar.clone(), false);
694698
assert!(results.iter().all(|r| matches!(r.status, CompressionStatus::Skipped)));
@@ -707,6 +711,7 @@ mod tests {
707711
assert!(results.iter().all(|r| fs::exists(&r.output_path).unwrap_or(false)));
708712

709713
options.quality = Some(100);
714+
options.png_opt_level = 6;
710715
options.lossless = true;
711716
options.overwrite_policy = OverwritePolicy::All;
712717
results = start_compression(&input_files, &options, progress_bar.clone(), true);

src/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ fn write_recap_message(compression_results: &[CompressionResult], verbose: Verbo
9494
);
9595
}
9696
}
97+
9798
fn get_parallelism_count(requested_threads: u32, available_threads: usize) -> usize {
9899
if requested_threads > 0 {
99100
std::cmp::min(available_threads, requested_threads as usize)

0 commit comments

Comments
 (0)