blob: d69dac38916c85085b2e376dde601fadffb0248c [file] [log] [blame]
use crate::error::IoResultExt;
use crate::TempDir;
use std::io;
use std::path::PathBuf;
pub fn create(
path: PathBuf,
permissions: Option<&std::fs::Permissions>,
keep: bool,
) -> io::Result<TempDir> {
let mut dir_options = std::fs::DirBuilder::new();
#[cfg(not(target_os = "wasi"))]
{
use std::os::unix::fs::{DirBuilderExt, PermissionsExt};
if let Some(p) = permissions {
dir_options.mode(p.mode());
}
}
dir_options
.create(&path)
.with_err_path(|| &path)
.map(|_| TempDir {
path: path.into_boxed_path(),
keep,
})
}