1use std::path::PathBuf;
2
3#[cfg(target_os = "macos")]
4use decrypt_cookies::safari::SafariError;
5use decrypt_cookies::{
6 chromium::{builder::ChromiumBuilderError, ChromiumError},
7 firefox::{builder::FirefoxBuilderError, FirefoxError},
8};
9use snafu::{Location, Snafu};
10
11#[derive(Snafu)]
12#[derive(Debug)]
13#[snafu(visibility(pub))]
14pub enum Error {
15 #[snafu(display("Build Chromium: {source}{location}"))]
16 ChromiumBuilder {
17 source: ChromiumBuilderError,
18 #[snafu(implicit)]
19 location: Location,
20 },
21 #[snafu(display("Chromium: {source}{location}"))]
22 Chromium {
23 source: ChromiumError,
24 #[snafu(implicit)]
25 location: Location,
26 },
27 #[snafu(display("Build Firefox: {source}{location}"))]
28 FirefoxBuilder {
29 source: FirefoxBuilderError,
30 #[snafu(implicit)]
31 location: Location,
32 },
33 #[snafu(display("Firefox: {source}{location}"))]
34 Firefox {
35 source: FirefoxError,
36 #[snafu(implicit)]
37 location: Location,
38 },
39 #[cfg(target_os = "macos")]
40 #[snafu(display("Firefox: {source}{location}"))]
41 Safari {
42 source: SafariError,
43 #[snafu(implicit)]
44 location: Location,
45 },
46 #[snafu(display("{source} path: {}{location}", path.display()))]
47 Io {
48 source: std::io::Error,
49 path: PathBuf,
50 #[snafu(implicit)]
51 location: Location,
52 },
53 #[snafu(display("{source}"))]
54 TokioTask {
55 source: tokio::task::JoinError,
56 #[snafu(implicit)]
57 location: Location,
58 },
59}
60
61pub type Result<T> = std::result::Result<T, Error>;