tidy_browser/
error.rs

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("{source}\n@:{location}"))]
16    Json {
17        source: serde_json::Error,
18        #[snafu(implicit)]
19        location: Location,
20    },
21    #[snafu(display("{source}\n@:{location}"))]
22    BinaryCookies {
23        source: binary_cookies::error::ParseError,
24        #[snafu(implicit)]
25        location: Location,
26    },
27    #[snafu(display("Build Chromium: {source}\n@:{location}"))]
28    ChromiumBuilder {
29        source: ChromiumBuilderError,
30        #[snafu(implicit)]
31        location: Location,
32    },
33    #[snafu(display("Chromium: {source}\n@:{location}"))]
34    Chromium {
35        source: ChromiumError,
36        #[snafu(implicit)]
37        location: Location,
38    },
39    #[snafu(display("Build Firefox: {source}\n@:{location}"))]
40    FirefoxBuilder {
41        source: FirefoxBuilderError,
42        #[snafu(implicit)]
43        location: Location,
44    },
45    #[snafu(display("Firefox: {source}\n@:{location}"))]
46    Firefox {
47        source: FirefoxError,
48        #[snafu(implicit)]
49        location: Location,
50    },
51    #[cfg(target_os = "macos")]
52    #[snafu(display("Firefox: {source}\n@:{location}"))]
53    Safari {
54        source: SafariError,
55        #[snafu(implicit)]
56        location: Location,
57    },
58    #[snafu(display("{source} path: {}\n@:{location}", path.display()))]
59    Io {
60        source: std::io::Error,
61        path: PathBuf,
62        #[snafu(implicit)]
63        location: Location,
64    },
65    #[snafu(display("{source}\n@:{location}"))]
66    TokioTask {
67        source: tokio::task::JoinError,
68        #[snafu(implicit)]
69        location: Location,
70    },
71}
72
73pub type Result<T> = std::result::Result<T, Error>;