diff options
Diffstat (limited to 'src/site.rs')
-rw-r--r-- | src/site.rs | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/src/site.rs b/src/site.rs index 739cffb..4d2ce29 100644 --- a/src/site.rs +++ b/src/site.rs @@ -1,8 +1,7 @@ -use crate::error::SiteError; use crate::git::git_whatchanged; use crate::name::{Name, NameBuilder, Names}; -use crate::page::{MarkdownPage, Page, UnprocessedPage, WikitextPage}; -use crate::parser::WikitextParser; +use crate::page::{MarkdownPage, Page, PageError, UnprocessedPage, WikitextPage}; +use crate::parser::{ParserError, WikitextParser}; use crate::srcdir::{PathFilter, SourceDir}; use crate::token::TokenPatterns; use crate::util::make_relative_link; @@ -11,6 +10,36 @@ use std::collections::HashMap; use std::path::{Path, PathBuf}; use std::time::UNIX_EPOCH; +#[derive(Debug, thiserror::Error)] +pub enum SiteError { + #[error("link to missing page {1} on {0}")] + PageMissing(PathBuf, PathBuf), + + #[error(transparent)] + Page(#[from] Box<PageError>), + + #[error(transparent)] + Git(#[from] crate::git::GitError), + + #[error(transparent)] + Parser(#[from] Box<ParserError>), + + #[error(transparent)] + WalkDir(#[from] crate::srcdir::SourceDirError), +} + +impl From<PageError> for SiteError { + fn from(e: PageError) -> Self { + Self::Page(Box::new(e)) + } +} + +impl From<ParserError> for SiteError { + fn from(e: ParserError) -> Self { + Self::Parser(Box::new(e)) + } +} + pub struct Site { patterns: TokenPatterns, shortcuts: HashMap<String, Shortcut>, |