1use thiserror::Error;
2use tokio::sync::mpsc::error::SendError;
3
4#[derive(Debug, Error)]
5pub enum AppError {
6 #[error("not implemented")]
7 NotImplemented,
8 #[error(transparent)]
9 Octocrab(#[from] octocrab::Error),
10 #[error(transparent)]
11 Keyring(#[from] keyring::Error),
12 #[error(transparent)]
13 Io(#[from] std::io::Error),
14 #[error(transparent)]
15 Join(#[from] tokio::task::JoinError),
16 #[error(transparent)]
17 Inquire(#[from] inquire::error::InquireError),
18 #[error("error sending message on channel")]
19 TokioMpsc,
20 #[error(transparent)]
21 InitLoggingError(#[from] tracing_subscriber::util::TryInitError),
22 #[error("error setting global {0}")]
23 ErrorSettingGlobal(&'static str),
24 #[error(transparent)]
25 Other(#[from] anyhow::Error),
26}
27
28impl<T> From<SendError<T>> for AppError {
29 fn from(_: SendError<T>) -> Self {
30 AppError::TokioMpsc
31 }
32}
33
34pub type Result<T, E = AppError> = std::result::Result<T, E>;