use std::path::{Path, PathBuf};
pub fn output_path(
input: &Path,
suffix: Option<&str>,
prefix: Option<&str>,
outdir: Option<&Path>,
) -> PathBuf {
let stem = input.file_stem().unwrap_or_default().to_string_lossy();
let ext = input.extension().unwrap_or_default().to_string_lossy();
let filename = match suffix {
Some(s) => format!("{stem}.{s}.{ext}"),
None => format!("{stem}.{ext}"),
};
let filename = match prefix {
Some(p) => format!("{p}{filename}"),
None => filename,
};
let dir = outdir.unwrap_or_else(|| input.parent().unwrap_or(Path::new(".")));
dir.join(filename)
}