diff options
Diffstat (limited to 'src/journal.rs')
-rw-r--r-- | src/journal.rs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/journal.rs b/src/journal.rs index c3bb1eb..f58e49d 100644 --- a/src/journal.rs +++ b/src/journal.rs @@ -48,15 +48,17 @@ impl Journal { self.entries.clone() } - pub fn new_draft(&self, title: &str, editor: &str) -> anyhow::Result<()> { + pub fn new_draft(&self, title: &str, editor: &str) -> Result<(), JournalError> { let drafts = self.drafts(); if !drafts.exists() { - std::fs::create_dir(&drafts)?; + std::fs::create_dir(&drafts) + .map_err(|err| JournalError::CreateDirectory(drafts.to_path_buf(), err))?; } let pathname = self.pick_file_id(&drafts)?; let text = format!(r#"[[!meta title="{}"]]"#, title); - std::fs::write(&pathname, format!("{}\n\n", text))?; + std::fs::write(&pathname, format!("{}\n\n", text)) + .map_err(|err| JournalError::WriteEntry(pathname.to_path_buf(), err))?; self.edit(editor, &pathname)?; Ok(()) } @@ -105,23 +107,27 @@ impl Journal { } } - pub fn edit_draft(&self, editor: &str, filename: &Path) -> anyhow::Result<()> { + pub fn edit_draft(&self, editor: &str, filename: &Path) -> Result<(), JournalError> { self.edit(editor, filename)?; Ok(()) } - pub fn finish_draft(&self, filename: &Path, basename: &str) -> anyhow::Result<()> { + pub fn finish_draft(&self, filename: &Path, basename: &str) -> Result<(), JournalError> { let entries = self.entries(); if !entries.exists() { - std::fs::create_dir(&entries)?; + std::fs::create_dir(&entries) + .map_err(|err| JournalError::CreateDirectory(entries.to_path_buf(), err))?; } let subdir = entries.join(Local::today().format("%Y/%m/%d").to_string()); - std::fs::create_dir_all(&subdir)?; + std::fs::create_dir_all(&subdir) + .map_err(|err| JournalError::CreateDirectory(entries.to_path_buf(), err))?; let basename = PathBuf::from(format!("{}.mdwn", basename)); let entry = subdir.join(basename); - std::fs::rename(filename, entry)?; + std::fs::rename(filename, &entry).map_err(|err| { + JournalError::RenameEntry(filename.to_path_buf(), entry.to_path_buf(), err) + })?; Ok(()) } } |