xref: /DADK/dadk/src/utils.rs (revision 7a97f354ff649be3f7ed5e2b7f96d45e87c19500)
1eaa67f3cSLoGin use std::path::PathBuf;
2eaa67f3cSLoGin 
3eaa67f3cSLoGin use anyhow::{anyhow, Result};
4eaa67f3cSLoGin 
5eaa67f3cSLoGin /// 检查目录是否存在
check_dir_exists<'a>(path: &'a PathBuf) -> Result<&'a PathBuf>6eaa67f3cSLoGin pub(super) fn check_dir_exists<'a>(path: &'a PathBuf) -> Result<&'a PathBuf> {
7eaa67f3cSLoGin     if !path.exists() {
8eaa67f3cSLoGin         return Err(anyhow!("Path '{}' not exists", path.display()));
9eaa67f3cSLoGin     }
10eaa67f3cSLoGin     if !path.is_dir() {
11eaa67f3cSLoGin         return Err(anyhow!("Path '{}' is not a directory", path.display()));
12eaa67f3cSLoGin     }
13eaa67f3cSLoGin 
14eaa67f3cSLoGin     return Ok(path);
15eaa67f3cSLoGin }
16eaa67f3cSLoGin 
17eaa67f3cSLoGin /// 获取给定路径的绝对路径
abs_path(path: &PathBuf) -> PathBuf18eaa67f3cSLoGin pub fn abs_path(path: &PathBuf) -> PathBuf {
19eaa67f3cSLoGin     if path.is_absolute() {
20eaa67f3cSLoGin         path.to_path_buf()
21eaa67f3cSLoGin     } else {
22*7a97f354SLoGin         let origin = std::env::current_dir().unwrap().join(path);
23*7a97f354SLoGin         origin.canonicalize().unwrap_or(origin)
24eaa67f3cSLoGin     }
25eaa67f3cSLoGin }
26