summaryrefslogtreecommitdiff
path: root/src/operations/mkdir.rs
blob: 9b2abd2d2ae074ca32d8213aff33aa68bc64d332 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::*;

/// Create a new directory and all parent directories.
#[must_use]
pub fn make_directory(path: impl AsRef<Path>) -> WriteResult<()> {
    let make_result = std::fs::DirBuilder::new().recursive(true).create(&path);
    Ok(io_result_to_write_result(make_result, &path.as_ref())?)
}

/// Create the parent directory of a path.
#[must_use]
pub fn make_parent_directory(path: impl AsRef<Path>) -> WriteResult<()> {
    match path.as_ref().parent() {
        Some(parent) => make_directory(parent),
        None => Ok(()),
    }
}