use std::path::PathBuf;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum OrbitError {
#[error("I/O error at {path}: {source}")]
Io {
path: PathBuf,
#[source]
source: std::io::Error,
},
#[error("configuration error: {0}")]
Config(String),
#[error("page error at {path}: {message}")]
Page {
path: PathBuf,
message: String,
},
#[error("template error: {0}")]
Template(String),
#[error("front matter parse error at {path}: {source}")]
FrontMatter {
path: PathBuf,
#[source]
source: serde_yaml::Error,
},
}
#[derive(Debug, Error)]
#[error("{message}")]
pub struct PageError {
pub path: PathBuf,
pub message: String,
}
impl PageError {
pub fn new(path: impl Into<PathBuf>, message: impl Into<String>) -> Self {
Self {
path: path.into(),
message: message.into(),
}
}
}
impl From<PageError> for OrbitError {
fn from(value: PageError) -> Self {
Self::Page {
path: value.path,
message: value.message,
}
}
}