1use csv::Error as CsvError;
2use regex::Error as RegexError;
3
4use super::template;
5
6#[derive(thiserror::Error, Debug)]
7pub enum ImportError {
8 #[error("failed to perform IO")]
9 IO(#[from] std::io::Error),
10 #[error("failed to parse CSV")]
11 CSV(#[from] CsvError),
12 #[error("failed to parse XML")]
13 XML(#[from] quick_xml::DeError),
14 #[error("failed to parse YAML")]
15 YAML(#[from] serde_yaml::Error),
16 #[error("failed to parse VISECA file: {0}")]
17 Viseca(String),
18 #[error("invalid flag {0}")]
19 InvalidFlag(&'static str),
20 #[error("invalid config {0}")]
21 InvalidConfig(&'static str),
22 #[error("invalid datetime")]
23 InvalidDatetime(#[from] chrono::ParseError),
24 #[error("invalid decimal")]
25 InvalidDecimal(#[from] rust_decimal::Error),
26 #[error("invalid regex")]
27 InvalidRegex(#[from] RegexError),
28 #[error("failed to parse template")]
29 TemplateParseFailed(#[from] template::ParseError),
30 #[error("failed to render template")]
31 TemplateRenderFailed(#[from] template::RenderError),
32 #[error("other error: {0}")]
33 Other(String),
34 #[error("unimplemented: {0}")]
35 Unimplemented(&'static str),
36 #[error("unknown format")]
37 UnknownFormat,
38}