Skip to main content

i6_pack/
utils.rs

1use std::io;
2use std::path::{Path, PathBuf};
3
4pub fn remove_extension(filename: &str, extension: &str) -> String {
5  filename.strip_suffix(extension).unwrap_or(filename).to_owned()
6}
7
8pub fn validate_path(path: &str) -> io::Result<PathBuf> {
9  let path = Path::new(path);
10  if path.exists() {
11    Ok(path.to_path_buf())
12  } else {
13    Err(io::Error::new(io::ErrorKind::NotFound, "Path does not exist"))
14  }
15}
16
17pub fn sanitize_output_path(output_path: &str) -> io::Result<PathBuf> {
18  let path = Path::new(output_path);
19  if path.is_absolute()
20    && !path
21      .components()
22      .any(|comp| matches!(comp, std::path::Component::ParentDir))
23  {
24    Ok(path.to_path_buf())
25  } else {
26    Err(io::Error::new(io::ErrorKind::InvalidInput, "Invalid output path"))
27  }
28}