Skip to content

Commit 191c655

Browse files
committed
Fix lossless not working
1 parent e7fce9a commit 191c655

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ homepage = "https://github.com/Lymphatus/caesium-clt"
1515
repository = "https://github.com/Lymphatus/caesium-clt"
1616

1717
[dependencies]
18-
indicatif = {version= "0.17", features = ["rayon"]}
18+
indicatif = { version = "0.17", features = ["rayon"] }
1919
walkdir = "2.5"
2020
infer = "0.16"
2121
rayon = "1.10"

src/compressor.rs

+12
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ pub struct CompressionResult {
3232
pub struct CompressionOptions {
3333
pub quality: Option<u32>,
3434
pub max_size: Option<usize>,
35+
pub lossless: bool,
3536
pub exif: bool,
3637
pub png_opt_level: u8,
3738
pub zopfli: bool,
@@ -243,6 +244,8 @@ fn build_compression_parameters(
243244
parameters.webp.quality = quality;
244245
parameters.gif.quality = quality;
245246

247+
parameters.optimize = options.lossless;
248+
246249
parameters.keep_metadata = options.exif;
247250

248251
parameters.png.optimization_level = options.png_opt_level;
@@ -703,6 +706,13 @@ mod tests {
703706
assert!(results.iter().all(|r| matches!(r.status, CompressionStatus::Success)));
704707
assert!(results.iter().all(|r| fs::exists(&r.output_path).unwrap_or(false)));
705708

709+
options.quality = Some(100);
710+
options.lossless = true;
711+
options.overwrite_policy = OverwritePolicy::All;
712+
results = start_compression(&input_files, &options, progress_bar.clone(), true);
713+
assert!(results.iter().all(|r| matches!(r.status, CompressionStatus::Success)));
714+
assert!(results.iter().all(|r| fs::exists(&r.output_path).unwrap_or(false)));
715+
706716
options.quality = Some(80);
707717
options.keep_dates = true;
708718
results = start_compression(&input_files, &options, progress_bar.clone(), false);
@@ -740,9 +750,11 @@ mod tests {
740750
}));
741751
assert!(results.iter().all(|r| fs::exists(&r.output_path).unwrap_or(false)));
742752
}
753+
743754
fn setup_options() -> CompressionOptions {
744755
CompressionOptions {
745756
quality: Some(80),
757+
lossless: false,
746758
output_folder: None,
747759
same_folder_as_input: false,
748760
overwrite_policy: OverwritePolicy::All,

src/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ fn setup_progress_bar(len: usize, verbose: VerboseLevel) -> ProgressBar {
122122
fn build_compression_options(args: &CommandLineArgs, base_path: &Path) -> CompressionOptions {
123123
CompressionOptions {
124124
quality: args.compression.quality,
125+
lossless: args.compression.lossless,
125126
output_folder: args.output_destination.output.clone(),
126127
same_folder_as_input: args.output_destination.same_folder_as_input,
127128
overwrite_policy: args.overwrite,

0 commit comments

Comments
 (0)