Files
nix_builder/src/fs_util.rs

34 lines
1007 B
Rust
Raw Normal View History

2026-02-14 16:00:37 -05:00
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;
2026-02-14 22:15:09 -05:00
let result = matches!(metadata, Ok(metadata) if metadata.is_dir());
2026-02-14 16:00:37 -05:00
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
}