blaze_common/
util.rs

1use std::path::{Path, PathBuf};
2
3use crate::error::Result;
4use anyhow::anyhow;
5
6pub fn normalize_path<P: AsRef<Path>>(path: P) -> Result<PathBuf> {
7    Ok(PathBuf::from(normalize_path_string(&path_to_string(
8        path.as_ref(),
9    )?)))
10}
11
12pub fn normalize_path_string(path_str: &str) -> String {
13    normalize_slashes(path_str)
14}
15
16fn normalize_slashes(path_string: &str) -> String {
17    #[cfg(unix)]
18    return path_string.replace('\\', "/");
19    #[cfg(windows)]
20    path_string.replace('/', "\\")
21}
22
23pub fn path_to_string<P: AsRef<Path>>(path: P) -> Result<String> {
24    let path_ref = path.as_ref();
25    path_ref
26        .to_str()
27        .map(str::to_owned)
28        .ok_or_else(|| anyhow!("error while converting path {}", path_ref.display()))
29}