//! Custom error types for the nrd.sh compiler. use std::path::PathBuf; /// All errors that can occur during site compilation. #[derive(Debug, thiserror::Error)] pub enum Error { /// Failed to read a content file. #[error("failed to read {path}: {source}")] ReadFile { path: PathBuf, #[source] source: std::io::Error, }, /// Failed to parse frontmatter. #[error("invalid frontmatter in {path}: {message}")] Frontmatter { path: PathBuf, message: String }, /// Failed to write output file. #[error("failed to write {path}: {source}")] WriteFile { path: PathBuf, #[source] source: std::io::Error, }, /// Failed to create output directory. #[error("failed to create directory {path}: {source}")] CreateDir { path: PathBuf, #[source] source: std::io::Error, }, /// Content directory not found. #[error("content directory not found: {0}")] ContentDirNotFound(PathBuf), /// Failed to parse configuration file. #[error("invalid config in {path}: {message}")] Config { path: PathBuf, message: String }, /// Failed to load templates. #[error("failed to load templates: {0}")] TemplateLoad(#[source] tera::Error), /// Failed to render template. #[error("failed to render template '{template}'")] TemplateRender { template: String, #[source] source: tera::Error, }, } /// Result type alias for compiler operations. pub type Result = std::result::Result;