dfx-core 0.3.0

dfx core library
Documentation
use crate::error::fs::EnsureDirExistsError::NotADirectory;
use crate::error::fs::{EnsureDirExistsError, EnsureParentDirExistsError};
use std::path::Path;

pub fn ensure_dir_exists(p: &Path) -> Result<(), EnsureDirExistsError> {
    if !p.exists() {
        crate::fs::create_dir_all(p)?;
        Ok(())
    } else if !p.is_dir() {
        Err(NotADirectory(p.to_path_buf()))
    } else {
        Ok(())
    }
}

pub fn ensure_parent_dir_exists(d: &Path) -> Result<(), EnsureParentDirExistsError> {
    let parent = crate::fs::parent(d)?;
    ensure_dir_exists(&parent)?;
    Ok(())
}