puccini_csar/errors/
csar.rs

1use super::{invalid_key::*, malformed_key::*, tosca_meta::*};
2
3use {depiction::*, std::io, thiserror::*};
4
5//
6// CsarError
7//
8
9/// CSAR error.
10#[derive(Debug, Depict, Error)]
11pub enum CsarError {
12    /// I/O.
13    #[error("I/O: {0}")]
14    IO(#[from] io::Error),
15
16    /// Unsupported format.
17    #[cfg(feature = "creator")]
18    #[error("unsupported format: {0}")]
19    UnsupportedFormat(super::super::creator::Format),
20
21    /// Missing.
22    #[error("missing: {0}")]
23    Missing(String),
24
25    /// Invalid.
26    #[error("invalid: {0}")]
27    Invalid(String),
28
29    /// TOSCA meta.
30    #[error("TOSCA meta: {0}")]
31    #[depict(as(depict))]
32    ToscaMeta(#[from] ToscaMetaError),
33
34    /// Walk directory.
35    #[error("walk directory: {0}")]
36    WalkDirectory(#[from] walkdir::Error),
37
38    /// URL.
39    #[cfg(feature = "url")]
40    #[error("URL: {0}")]
41    URL(#[from] read_url::UrlError),
42}
43
44impl From<InvalidKeyError> for CsarError {
45    fn from(error: InvalidKeyError) -> Self {
46        Self::ToscaMeta(error.into())
47    }
48}
49
50impl From<MalformedKeyError> for CsarError {
51    fn from(error: MalformedKeyError) -> Self {
52        Self::ToscaMeta(error.into())
53    }
54}