hagen_core/
error.rs

1use failure::{Error, Fail};
2use handlebars::{RenderError, TemplateFileError, TemplateRenderError};
3use jsonpath_lib::JsonPathError;
4use url::ParseError;
5
6#[derive(Debug, Fail)]
7pub enum GeneratorError {
8    #[fail(display = "Failed to process")]
9    GenericError(#[cause] Error),
10    #[fail(display = "{}", _1)]
11    GenericDetailError(#[cause] Error, String),
12    #[fail(display = "Failed to process")]
13    JsonError(#[cause] serde_json::Error),
14    #[fail(display = "Failed to process")]
15    YamlError(#[cause] serde_yaml::Error),
16    #[fail(display = "Failed to process")]
17    TemplateError(#[cause] TemplateFileError),
18    #[fail(display = "Failed to process")]
19    TemplateRenderError(#[cause] TemplateRenderError),
20    #[fail(display = "Failed to process")]
21    IoError(#[cause] std::io::Error),
22    #[fail(display = "{}", _0)]
23    Error(String),
24    #[fail(display = "JSON path error: {}", _0)]
25    JsonPath(String),
26}
27
28impl From<GeneratorError> for RenderError {
29    fn from(err: GeneratorError) -> Self {
30        RenderError::with(err.compat())
31    }
32}
33
34impl From<TemplateFileError> for GeneratorError {
35    fn from(err: TemplateFileError) -> GeneratorError {
36        GeneratorError::TemplateError(err)
37    }
38}
39
40impl From<std::io::Error> for GeneratorError {
41    fn from(err: std::io::Error) -> GeneratorError {
42        GeneratorError::IoError(err)
43    }
44}
45
46impl From<serde_json::Error> for GeneratorError {
47    fn from(err: serde_json::Error) -> GeneratorError {
48        GeneratorError::JsonError(err)
49    }
50}
51
52impl From<serde_yaml::Error> for GeneratorError {
53    fn from(err: serde_yaml::Error) -> GeneratorError {
54        GeneratorError::YamlError(err)
55    }
56}
57
58impl From<JsonPathError> for GeneratorError {
59    fn from(err: JsonPathError) -> GeneratorError {
60        GeneratorError::JsonPath(err.to_string())
61    }
62}
63
64impl From<handlebars::TemplateRenderError> for GeneratorError {
65    fn from(err: handlebars::TemplateRenderError) -> Self {
66        GeneratorError::GenericError(err.into())
67    }
68}
69
70impl From<handlebars::RenderError> for GeneratorError {
71    fn from(err: handlebars::RenderError) -> Self {
72        GeneratorError::GenericError(err.into())
73    }
74}
75
76impl From<ParseError> for GeneratorError {
77    fn from(err: ParseError) -> Self {
78        GeneratorError::GenericError(err.into())
79    }
80}
81
82impl From<Error> for GeneratorError {
83    fn from(err: Error) -> GeneratorError {
84        GeneratorError::GenericError(err)
85    }
86}