summaryrefslogtreecommitdiff
path: root/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs110
1 files changed, 21 insertions, 89 deletions
diff --git a/src/error.rs b/src/error.rs
index 23ef7bc..d38c1e9 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -1,108 +1,40 @@
use crate::html::HtmlError;
-use std::path::PathBuf;
#[derive(Debug, thiserror::Error)]
-pub enum SiteError {
- #[error("source directory doesn't exist: {0}")]
- SourceDirMissing(PathBuf),
-
- #[error("failed to list files in source directory: {0}")]
- WalkDir(PathBuf, #[source] walkdir::Error),
-
- #[error("could not read file: {0}")]
- FileRead(PathBuf, #[source] std::io::Error),
-
- #[error("could not write file: {0}")]
- FileWrite(PathBuf, #[source] std::io::Error),
-
- #[error("string formatting error: {0}")]
- Format(#[source] std::fmt::Error),
-
- #[error("could not convert input text from {0} to UTF-8")]
- Utf8(PathBuf, #[source] std::string::FromUtf8Error),
-
- #[error("failed to canonicalize path {0}")]
- Canonicalize(PathBuf, #[source] std::io::Error),
-
- #[error("failed to compute relative path for {0} against {1}")]
- Relative(PathBuf, PathBuf),
-
- #[error("failed to create {0}")]
- CreateFile(PathBuf, #[source] std::io::Error),
-
- #[error("failed to copy {0} to {1}")]
- CopyFile(PathBuf, PathBuf, #[source] std::io::Error),
-
- #[error("failed to create directory {0}")]
- CreateDir(PathBuf, #[source] std::io::Error),
-
- #[error("unknown directive {0}")]
- UnknownDirective(String),
-
- #[error("directive {0} does not allow unnamed arguments")]
- UnknownArgsNotAllowed(String),
-
- #[error("directive {0} has more than one unnamed argument")]
- TooManyUnnamedArgs(String),
-
- #[error("directive {0} is missing required argument {1}")]
- DirectiveMissingArg(String, String),
-
- #[error("directive {0} has unknown argument {1}")]
- DirectiveUnknownArg(String, String),
-
- #[error("link to missing page {1} on {0}")]
- PageMissing(PathBuf, PathBuf),
-
- #[error("attempt to use definition lists in Markdown: line {0}, column {1}")]
- DefinitionList(usize, usize),
-
- #[error("failed to get file metadata: {0}")]
- FileMetadata(PathBuf, #[source] std::io::Error),
-
- #[error("failed to get file modification time: {0}")]
- FileMtime(PathBuf, #[source] std::io::Error),
+pub enum RikiError {
+ #[error(transparent)]
+ WalkDir(#[from] crate::srcdir::SourceDirError),
- #[error("failed to set modification time for file {0}")]
- Utimensat(PathBuf, #[source] std::io::Error),
+ #[error(transparent)]
+ Util(#[from] crate::util::UtilError),
- #[error("failed to convert time to Unix time")]
- UnixTime(#[source] std::time::SystemTimeError),
+ #[error(transparent)]
+ Git(#[from] crate::git::GitError),
- #[error("failed to parse Unix timetamp: {0}")]
- ParseUnixTimestamp(String, #[source] std::num::ParseIntError),
+ #[error(transparent)]
+ Page(#[from] crate::page::PageError),
- #[error("faileed to invoked git with subcommand {0} in {1}")]
- GitInvoke(String, PathBuf, #[source] std::io::Error),
+ #[error(transparent)]
+ Directive(#[from] crate::directive::DirectiveError),
- #[error("git {0} in in {1}:\n{2}")]
- GitError(String, PathBuf, String),
+ #[error(transparent)]
+ Parser(#[from] crate::parser::ParserError),
- #[error("failed to parse date: {0:?}")]
- UnknownTimestamp(String),
+ #[error(transparent)]
+ Time(#[from] crate::time::TimeError),
- #[error("failed to process page {0}")]
- PageProblem(PathBuf, #[source] Box<Self>),
+ #[error(transparent)]
+ Version(#[from] crate::version::VersionError),
#[error(transparent)]
PageSpec(#[from] crate::pagespec::PageSpecError),
- #[error("failed to parse wikitext, line {0}, column {1}: {2:?}")]
- WikitextSyntax(usize, usize, Vec<crate::token::TokenKind>),
-
- #[error("directive isn't implemented yet: {0}")]
- UnimplementedDirective(String),
-
- #[error("toc directive arguments 'levels' could not be parsed as an integer: {0}")]
- LevelsParse(String, #[source] std::num::ParseIntError),
+ #[error(transparent)]
+ Wikitext(#[from] crate::wikitext::WikitextError),
#[error(transparent)]
HtmlError(#[from] HtmlError),
-}
-impl SiteError {
- pub fn wikitext_syntax(line: usize, col: usize, tokens: &[crate::token::TokenKind]) -> Self {
- let tokens = tokens.to_vec();
- Self::WikitextSyntax(line, col, tokens)
- }
+ #[error(transparent)]
+ Site(#[from] crate::site::SiteError),
}