summaryrefslogtreecommitdiff
path: root/src/site.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/site.rs')
-rw-r--r--src/site.rs35
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>,