sitdown/
error.rs

1use std::path::PathBuf;
2
3use thiserror::Error;
4
5pub type Result<A> = std::result::Result<A, Error>;
6
7#[derive(Debug, Error)]
8pub enum Error {
9    #[error("Encountered io error: `{0}`")]
10    IOError(std::io::Error),
11    #[error("Unexpected path for a page: `{0}`")]
12    PageError(PathBuf),
13    #[error("Unexpected path for a directory: `{0}`")]
14    DirError(PathBuf),
15    #[error("Failed to parse yaml: `{0}`")]
16    SerdeError(serde_yml::Error),
17    #[error("Error with templating: `{0}`")]
18    JinjaError(minijinja::Error),
19    #[error("Error watching files: `{0}`")]
20    NotifyError(notify::Error),
21}
22
23impl From<std::io::Error> for Error {
24    fn from(value: std::io::Error) -> Self {
25        Self::IOError(value)
26    }
27}
28
29impl From<serde_yml::Error> for Error {
30    fn from(value: serde_yml::Error) -> Self {
31        Self::SerdeError(value)
32    }
33}
34impl From<minijinja::Error> for Error {
35    fn from(value: minijinja::Error) -> Self {
36        Self::JinjaError(value)
37    }
38}
39impl From<notify::Error> for Error {
40    fn from(value: notify::Error) -> Self {
41        Self::NotifyError(value)
42    }
43}