| use crate::errors::{Error, ErrorKind}; | |
| use std::io; | |
| use std::path::Path; | |
| /// A builder for creating directories in various manners. | |
| /// | |
| /// This is a wrapper around [`tokio::fs::DirBuilder`]. | |
| #[derive(Debug, Default)] | |
| #[cfg_attr(docsrs, doc(cfg(feature = "tokio")))] | |
| pub struct DirBuilder { | |
| inner: tokio::fs::DirBuilder, | |
| } | |
| impl DirBuilder { | |
| /// Creates a new set of options with default mode/security settings for all | |
| /// platforms and also non-recursive. | |
| /// | |
| /// This is a wrapper version of [`tokio::fs::DirBuilder::new`] | |
| /// | |
| /// # Examples | |
| /// | |
| /// ```no_run | |
| /// use fs_err::tokio::DirBuilder; | |
| /// | |
| /// let builder = DirBuilder::new(); | |
| /// ``` | |
| pub fn new() -> Self { | |
| Default::default() | |
| } | |
| /// Indicates whether to create directories recursively (including all parent | |
| /// directories). Parents that do not exist are created with the same security and | |
| /// permissions settings. | |
| /// | |
| /// Wrapper around [`tokio::fs::DirBuilder::recursive`]. | |
| pub fn recursive(&mut self, recursive: bool) -> &mut Self { | |
| self.inner.recursive(recursive); | |
| self | |
| } | |
| /// Creates the specified directory with the configured options. | |
| /// | |
| /// Wrapper around [`tokio::fs::DirBuilder::create`]. | |
| pub async fn create(&self, path: impl AsRef<Path>) -> io::Result<()> { | |
| let path = path.as_ref(); | |
| self.inner | |
| .create(path) | |
| .await | |
| .map_err(|err| Error::build(err, ErrorKind::CreateDir, path)) | |
| } | |
| } | |
| #[cfg(unix)] | |
| impl DirBuilder { | |
| /// Sets the mode to create new directories with. | |
| /// | |
| /// Wrapper around [`tokio::fs::DirBuilder::mode`]. | |
| pub fn mode(&mut self, mode: u32) -> &mut Self { | |
| self.inner.mode(mode); | |
| self | |
| } | |
| } |