1use std::string::FromUtf8Error;
2use thiserror::Error;
3
4pub type Result<T> = std::result::Result<T, SrtoolLibError>;
5
6#[derive(Error, Debug)]
7pub enum SrtoolLibError {
8 #[error("Unknown container engine `{0:?}`")]
9 UnknownContainerEngine(Option<String>),
10
11 #[error("Error setting Ctrl-C handler")]
12 CtrlCSetup,
13
14 #[error("IO error: {0}")]
15 IO(std::io::Error),
16
17 #[error("Http request error: {0}")]
18 HttpRequest(Box<ureq::Error>),
19
20 #[error("UTF8 error: {0}")]
21 UTF8(std::string::FromUtf8Error),
22}
23
24impl From<ureq::Error> for SrtoolLibError {
25 fn from(error: ureq::Error) -> Self {
26 SrtoolLibError::HttpRequest(Box::new(error))
27 }
28}
29
30impl From<std::io::Error> for SrtoolLibError {
31 fn from(error: std::io::Error) -> Self {
32 SrtoolLibError::IO(error)
33 }
34}
35
36impl From<FromUtf8Error> for SrtoolLibError {
37 fn from(error: FromUtf8Error) -> Self {
38 SrtoolLibError::UTF8(error)
39 }
40}