From 2264032e4747d1d9598c73368fa6c10f3ed6f26d Mon Sep 17 00:00:00 2001 From: Matteo Paonessa Date: Wed, 20 Nov 2024 11:57:17 +0800 Subject: [PATCH] Suffix option #77 --- src/main.rs | 13 ++++++++++++- src/options.rs | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index e096e84..89a9e0a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -44,6 +44,7 @@ fn main() { let keep_dates = opt.keep_dates; let png_optimization_level = opt.png_opt_level.clamp(0, 6); let lossless = opt.lossless; + let suffix = opt.suffix; let compress_by_size = opt.max_size.is_some(); @@ -130,11 +131,21 @@ fn main() { result: false, }; - let filename = if keep_structure { + let mut filename = if keep_structure { input_file.strip_prefix(base_path.clone()).unwrap_or_else(|_| Path::new("")).as_os_str() } else { input_file.file_name().unwrap_or_default() }; + let mut basename = Path::new(filename).file_stem().unwrap_or_default().to_os_string(); + + if !suffix.is_empty() { + basename.push(suffix.clone()); + if let Some(ext) = input_file.extension() { + basename.push("."); + basename.push(ext); + } + filename = basename.as_os_str(); + } if filename.is_empty() { compression_result.error = "Cannot retrieve filename for {}. Skipping.".to_string(); diff --git a/src/options.rs b/src/options.rs index c73fba6..7186c8a 100644 --- a/src/options.rs +++ b/src/options.rs @@ -102,6 +102,10 @@ pub struct Opt { #[structopt(long = "same-folder-as-input", conflicts_with = "output")] pub same_folder_as_input: bool, + /// convert the image to the selected format (jpg, png, webp, tiff) + #[structopt(long = "suffix", default_value = "none")] + pub suffix: String, + /// Files to process #[structopt(name = "FILE", parse(from_os_str))] pub files: Vec,