diff --git a/src/bin/main.rs b/src/bin/main.rs index a55c449..372c7ee 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -1,7 +1,7 @@ extern crate navi; -use anyhow::Error; +use navi::FileAnIssue; -fn main() -> Result<(), Error> { - navi::handle_config(navi::config_from_env()) +fn main() -> Result<(), FileAnIssue> { + navi::handle_config(navi::config_from_env()).map_err(FileAnIssue::new) } diff --git a/src/lib.rs b/src/lib.rs index 05e175e..5a9f339 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,4 +15,5 @@ mod terminal; mod welcome; pub use handler::handle_config; +pub use structures::error::file_issue::FileAnIssue; pub use structures::option::{config_from_env, config_from_iter}; diff --git a/src/structures/error/file_issue.rs b/src/structures/error/file_issue.rs new file mode 100644 index 0000000..677b435 --- /dev/null +++ b/src/structures/error/file_issue.rs @@ -0,0 +1,19 @@ +use std::fmt::Debug; +use thiserror::Error; + +#[derive(Error, Debug)] +#[error( + "Hey listen! Navi encountered a problem. + +Do you think this is a bug? File an issue at https://github.com/denisidoro/navi." +)] +pub struct FileAnIssue(#[source] anyhow::Error); + +impl FileAnIssue { + pub fn new(source: SourceError) -> Self + where + SourceError: Into, + { + FileAnIssue(source.into()) + } +} diff --git a/src/structures/error/mod.rs b/src/structures/error/mod.rs index 33a4904..4c4fadd 100644 --- a/src/structures/error/mod.rs +++ b/src/structures/error/mod.rs @@ -1,2 +1,3 @@ pub mod command; +pub mod file_issue; pub mod filesystem;