1use thiserror::Error;
3
4#[derive(Debug, Error)]
6pub enum Error {
7 #[error("{0}")]
9 Message(String),
10
11 #[error(r#"import format "{0}" is not supported"#)]
13 UnknownImportFormat(String),
14
15 #[error("no authenticator URLs found in zip archive '{0}'")]
17 NoAuthenticatorUrls(String),
18
19 #[error(transparent)]
21 Io(#[from] std::io::Error),
22
23 #[error(transparent)]
25 Core(#[from] sos_core::Error),
26
27 #[error(transparent)]
29 Backend(#[from] sos_backend::Error),
30
31 #[error(transparent)]
33 Vault(#[from] sos_vault::Error),
34
35 #[error(transparent)]
37 Csv(#[from] csv_async::Error),
38
39 #[error(transparent)]
41 Zip(#[from] async_zip::error::ZipError),
42
43 #[error(transparent)]
45 Json(#[from] serde_json::Error),
46
47 #[error(transparent)]
49 Url(#[from] url::ParseError),
50
51 #[error(transparent)]
53 TotpUrl(#[from] totp_rs::TotpUrlError),
54
55 #[cfg(all(
56 target_os = "macos",
57 feature = "import",
58 feature = "keychain-access"
59 ))]
60 #[error(transparent)]
62 Keychain(#[from] crate::import::keychain::Error),
63
64 #[cfg(all(
65 target_os = "macos",
66 feature = "import",
67 feature = "keychain-access"
68 ))]
69 #[error(transparent)]
71 KeychainParser(#[from] keychain_parser::Error),
72}