wick_asset_reference/
utils.rs1use std::path::PathBuf;
2
3use normpath::PathExt;
4
5use crate::Error;
6
7type Result<T> = std::result::Result<T, Error>;
8
9#[allow(clippy::option_if_let_else)]
10pub fn normalize_path(path: &std::path::Path, base: Option<PathBuf>) -> Result<PathBuf> {
11 let url = match base {
12 Some(full_url) => {
13 let p = PathBuf::from(&full_url).join(path);
14 p.normalize()
15 .map_err(|e| Error::NormalizationFailure(p.to_string_lossy().to_string(), e.to_string()))?
16 .as_path()
17 .to_owned()
18 }
19 None => {
20 if !path.is_absolute() {
21 std::env::current_dir().unwrap().join(path)
22 } else {
23 PathBuf::from(path)
24 }
25 }
26 };
27 Ok(url)
28}