pub const MODELS_DIR: &str = ".models";
pub fn resolve(rel: &str) -> String {
if std::path::Path::new(rel).exists() {
return rel.to_string();
}
let dir = std::env::current_exe()
.ok()
.and_then(|p| p.canonicalize().ok())
.and_then(|p| p.parent().map(std::path::Path::to_path_buf));
if let Some(dir) = dir {
for base in [Some(dir.as_path()), dir.parent()].into_iter().flatten() {
let p = base.join(rel);
if p.exists() {
return p.to_string_lossy().into_owned();
}
}
}
rel.to_string()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn missing_everywhere_returns_input() {
assert_eq!(
resolve(".models/definitely/not/there.onnx"),
".models/definitely/not/there.onnx"
);
}
}