fuck it whatever lmao
This commit is contained in:
parent
8a89f841ab
commit
6b5b3520b0
65
Cargo.lock
generated
65
Cargo.lock
generated
|
@ -2,6 +2,71 @@
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.79"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.78"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.35"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "roxy_core"
|
name = "roxy_core"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"thiserror",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.49"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror"
|
||||||
|
version = "1.0.57"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b"
|
||||||
|
dependencies = [
|
||||||
|
"thiserror-impl",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror-impl"
|
||||||
|
version = "1.0.57"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
||||||
|
|
|
@ -3,6 +3,6 @@ name = "roxy_core"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
anyhow = "1.0.79"
|
||||||
|
thiserror = "1.0.57"
|
||||||
|
|
85
src/error.rs
85
src/error.rs
|
@ -1,94 +1,33 @@
|
||||||
use std::{
|
use std::fmt::Display;
|
||||||
fmt::Display,
|
|
||||||
io::{Error as IOError, ErrorKind},
|
|
||||||
path::StripPrefixError,
|
|
||||||
string::FromUtf8Error,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
pub struct Error {
|
pub struct Error {
|
||||||
message: String,
|
message: String,
|
||||||
source: Option<Box<dyn std::error::Error>>,
|
#[source]
|
||||||
}
|
source: anyhow::Error,
|
||||||
|
|
||||||
impl Error {
|
|
||||||
pub fn new<E: std::error::Error + 'static>(message: String, source: E) -> Self {
|
|
||||||
Self {
|
|
||||||
message,
|
|
||||||
source: Some(Box::new(source)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn wrap<E: std::error::Error + 'static>(value: E) -> Option<Box<dyn std::error::Error>> {
|
|
||||||
Some(Box::new(value))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Display for Error {
|
impl Display for Error {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
write!(f, "{}", &self.message)?;
|
write!(f, "error: {} ", self.message).and_then(|_| self.source.fmt(f))
|
||||||
|
|
||||||
if let Some(source) = &self.source {
|
|
||||||
write!(f, " ({})", &source)?;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::error::Error for Error {
|
impl From<anyhow::Error> for Error {
|
||||||
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
|
fn from(value: anyhow::Error) -> Self {
|
||||||
self.source.as_deref()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<String> for Error {
|
|
||||||
fn from(value: String) -> Self {
|
|
||||||
Self {
|
|
||||||
message: value,
|
|
||||||
source: None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<StripPrefixError> for Error {
|
|
||||||
fn from(value: StripPrefixError) -> Self {
|
|
||||||
Self {
|
Self {
|
||||||
message: value.to_string(),
|
message: value.to_string(),
|
||||||
source: Self::wrap(value),
|
source: value,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<IOError> for Error {
|
impl From<std::io::Error> for Error {
|
||||||
fn from(value: IOError) -> Self {
|
fn from(value: std::io::Error) -> Self {
|
||||||
Self {
|
Self{
|
||||||
message: value.to_string(),
|
message: value.to_string(),
|
||||||
source: Self::wrap(value),
|
source: anyhow::Error::from(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Error> for IOError {
|
|
||||||
fn from(value: Error) -> Self {
|
|
||||||
IOError::new(ErrorKind::Other, value.message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<FromUtf8Error> for Error {
|
|
||||||
fn from(value: FromUtf8Error) -> Self {
|
|
||||||
Self {
|
|
||||||
message: value.to_string(),
|
|
||||||
source: Self::wrap(value),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<&'static dyn std::error::Error> for Error {
|
|
||||||
fn from(value: &'static dyn std::error::Error) -> Self {
|
|
||||||
Self {
|
|
||||||
message: value.to_string(),
|
|
||||||
source: Self::wrap(value),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
pub mod roxy;
|
pub mod roxy;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
|
pub mod result;
|
||||||
|
|
||||||
|
|
1
src/result.rs
Normal file
1
src/result.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
pub type Result<T> = std::result::Result<T, crate::error::Error>;
|
|
@ -108,7 +108,7 @@ impl Roxy {
|
||||||
fn read_asset(
|
fn read_asset(
|
||||||
asset: &mut Asset<BufReader<File>>,
|
asset: &mut Asset<BufReader<File>>,
|
||||||
parser: &mut Parser,
|
parser: &mut Parser,
|
||||||
) -> Result<Vec<u8>, Error> {
|
) -> crate::result::Result<Vec<u8>> {
|
||||||
let mut src = Vec::new();
|
let mut src = Vec::new();
|
||||||
let mut dst = Vec::new();
|
let mut dst = Vec::new();
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ impl Roxy {
|
||||||
match path.with_extension("").file_name() {
|
match path.with_extension("").file_name() {
|
||||||
Some(name) if name == "index" => Ok(path.to_path_buf()),
|
Some(name) if name == "index" => Ok(path.to_path_buf()),
|
||||||
Some(_) => Ok(path.with_extension("").join("index.html")),
|
Some(_) => Ok(path.with_extension("").join("index.html")),
|
||||||
None => Err(Error::from("invalid path \"{path:?}\"".to_string())),
|
None => Err(anyhow::Error::msg("invalid path \"{path:?}\"").into()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue