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}