From 23876c5420c20292966367659708a200c8668f96 Mon Sep 17 00:00:00 2001 From: gennyble Date: Thu, 22 Feb 2024 04:12:40 -0600 Subject: Minimum viable --- src/error.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/error.rs (limited to 'src/error.rs') diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..56539d0 --- /dev/null +++ b/src/error.rs @@ -0,0 +1,28 @@ +use std::io; + +use camino::Utf8PathBuf; + +#[derive(Debug, snafu::Snafu)] +pub enum RuntimeError { + #[snafu(display("the path was not found: {path}"))] + NotFound { + source: io::Error, + path: Utf8PathBuf, + }, + #[snafu(display("io error: {path}: {source}"))] + UnknownIo { + source: io::Error, + path: Utf8PathBuf, + }, + #[snafu(display("path tried to go below webroot: {path}"))] + PathTooLow { path: String }, +} + +impl RuntimeError { + pub fn from_io(source: io::Error, path: Utf8PathBuf) -> Self { + match source.kind() { + io::ErrorKind::NotFound => RuntimeError::NotFound { source, path }, + _ => RuntimeError::UnknownIo { source, path }, + } + } +} -- cgit 1.4.1-3-g733a5