pub fn create_directories_for_new_entry(
obsidian_root_path_dir: &Path,
) -> Result<(), Box<dyn Error>>Expand description
Creates all necessary parent directories for a diary file path.
Recursively creates the complete directory hierarchy needed to store a diary file.
Uses fs::create_dir_all() which is idempotent—calling it on existing directories
is safe and will not cause errors.
§Arguments
obsidian_root_path_dir- The full path including the filename for the diary entry
§Returns
Ok(())- All parent directories were successfully createdErr(Box<dyn Error>)- Directory creation failed (permission denied, invalid path, etc.)
§Errors
Returns an error if:
- The parent path cannot be determined (root directory)
- No write permissions to the parent directory
- Invalid filesystem (e.g., read-only filesystem)
- Path components are invalid (e.g., null bytes)
§Examples
ⓘ
use rusty_commit_saver::vim_commit::create_directories_for_new_entry;
use std::path::PathBuf;
use std::fs;
let diary_path = PathBuf::from("/tmp/test/deep/nested/path/diary.md");
// Create all parent directories
create_directories_for_new_entry(&diary_path).unwrap();
// Verify the directories were created
assert!(PathBuf::from("/tmp/test/deep/nested/path").exists());
// Calling again on existing directories is safe (idempotent)
assert!(create_directories_for_new_entry(&diary_path).is_ok());