@@ -2,7 +2,7 @@ use crate::options::{OutputFormat, OverwritePolicy};
2
2
use crate :: scan_files:: get_file_mime_type;
3
3
use caesium:: parameters:: CSParameters ;
4
4
use caesium:: { compress_in_memory, compress_to_size_in_memory, convert_in_memory, SupportedFileTypes } ;
5
- use indicatif:: { ParallelProgressIterator , ProgressBar } ;
5
+ use indicatif:: ProgressBar ;
6
6
use rayon:: iter:: ParallelIterator ;
7
7
use rayon:: prelude:: IntoParallelRefIterator ;
8
8
use std:: error:: Error ;
@@ -58,8 +58,11 @@ pub fn start_compression(
58
58
) -> Vec < CompressionResult > {
59
59
input_files
60
60
. 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
+ } )
63
66
. collect ( )
64
67
}
65
68
@@ -133,7 +136,7 @@ fn perform_compression(input_file: &PathBuf, options: &CompressionOptions, dry_r
133
136
compression_result. output_path = output_full_path. display ( ) . to_string ( ) ;
134
137
let output_exists = output_full_path. exists ( ) ;
135
138
136
- if options. overwrite_policy == OverwritePolicy :: Never {
139
+ if options. overwrite_policy == OverwritePolicy :: Never && output_exists {
137
140
compression_result. status = CompressionStatus :: Skipped ;
138
141
compression_result. compressed_size = original_file_size;
139
142
compression_result. message = "File already exists, skipped due overwrite policy" . to_string ( ) ;
@@ -689,6 +692,7 @@ mod tests {
689
692
) ;
690
693
691
694
options. quality = Some ( 100 ) ;
695
+
692
696
options. overwrite_policy = OverwritePolicy :: Never ;
693
697
results = start_compression ( & input_files, & options, progress_bar. clone ( ) , false ) ;
694
698
assert ! ( results. iter( ) . all( |r| matches!( r. status, CompressionStatus :: Skipped ) ) ) ;
@@ -707,6 +711,7 @@ mod tests {
707
711
assert ! ( results. iter( ) . all( |r| fs:: exists( & r. output_path) . unwrap_or( false ) ) ) ;
708
712
709
713
options. quality = Some ( 100 ) ;
714
+ options. png_opt_level = 6 ;
710
715
options. lossless = true ;
711
716
options. overwrite_policy = OverwritePolicy :: All ;
712
717
results = start_compression ( & input_files, & options, progress_bar. clone ( ) , true ) ;
0 commit comments