Files
nix_builder/src/fs_util.rs
2026-02-15 01:30:59 -05:00

34 lines
1007 B
Rust

macro_rules! assert_directory {
($dir:expr, $($params:tt)*) => {{
let dir = $dir;
let metadata = tokio::fs::metadata(&dir).await;
match metadata {
Ok(metadata) if !metadata.is_dir() => {
tracing::info!($($params)*);
tokio::fs::create_dir_all(dir).await?;
}
Err(_) => {
tracing::info!($($params)*);
tokio::fs::create_dir_all(dir).await?;
}
Ok(_) => {}
};
}};
}
use std::path::Path;
pub(crate) use assert_directory;
use crate::error::CustomError;
pub(crate) async fn is_directory<D: AsRef<Path>>(dir: D) -> Result<bool, CustomError> {
let metadata = tokio::fs::metadata(dir).await;
let result = matches!(metadata, Ok(metadata) if metadata.is_dir());
Ok(result)
}
pub(crate) async fn is_git_repo<D: AsRef<Path>>(dir: D) -> Result<bool, CustomError> {
let dot_git = dir.as_ref().join(".git");
is_directory(dot_git).await
}