Function create_directories_for_new_entry

Source
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 created
  • Err(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());