Skip to main content

logo_parser/
error.rs

1// SPDX-FileCopyrightText: 2023 CELESTIFYX Team
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4use std::{
5    io,
6    error,
7    path::PathBuf,
8
9    fmt::{
10        Display,
11        Formatter
12    }
13};
14
15#[derive(Debug)]
16pub enum Error {
17    JsonError(String),
18    IoError(io::Error),
19    ValidationError(String),
20    ColorParseError(String),
21    FileNotFound(PathBuf)
22}
23
24impl Display for Error {
25    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
26        match self {
27            Error::JsonError(e) => write!(f, "JSON parsing error: {}", e),
28            Error::IoError(e) => write!(f, "IO error: {}", e),
29            Error::ValidationError(e) => write!(f, "Validation error: {}", e),
30            Error::ColorParseError(e) => write!(f, "Color parse error: {}", e),
31            Error::FileNotFound(path) => write!(f, "File not found: {:?}", path)
32        }
33    }
34}
35
36impl error::Error for Error {
37    // TODO: NOTHING
38}
39
40impl From<io::Error> for Error {
41    fn from(err: io::Error) -> Self {
42        Error::IoError(err)
43    }
44}
45
46impl From<serde_json::Error> for Error {
47    fn from(err: serde_json::Error) -> Self {
48        Error::JsonError(err.to_string())
49    }
50}