diff options
Diffstat (limited to 'src/error.rs')
-rw-r--r-- | src/error.rs | 110 |
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), } |