diff options
author | Danilo Spinella | 2021-06-01 21:24:33 +0000 |
---|---|---|
committer | Danilo Spinella | 2021-06-01 21:27:16 +0000 |
commit | ea824ed05d2b35ac0a6621960eaf0ffdcfea4132 (patch) | |
tree | 7d90aef2b62fc11b639ae16c6e7979f89416e975 /helix-term/src | |
parent | c2e6b9f506fddec15e48bd06cf712aef2bf53e3c (diff) |
Improve errors handling in main by adding context
Return a anyhow::Result in main function so that Context can be used
there too.
Diffstat (limited to 'helix-term/src')
-rw-r--r-- | helix-term/src/main.rs | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/helix-term/src/main.rs b/helix-term/src/main.rs index ac060bbe..e3304312 100644 --- a/helix-term/src/main.rs +++ b/helix-term/src/main.rs @@ -10,9 +10,9 @@ use application::Application; use std::path::PathBuf; -use anyhow::Error; +use anyhow::{Context, Result}; -fn setup_logging(verbosity: u64) -> Result<(), fern::InitError> { +fn setup_logging(verbosity: u64) -> Result<()> { let mut base_config = fern::Dispatch::new(); // Let's say we depend on something which whose "info" level messages are too @@ -27,7 +27,7 @@ fn setup_logging(verbosity: u64) -> Result<(), fern::InitError> { _3_or_more => base_config.level(log::LevelFilter::Trace), }; - let home = dirs_next::home_dir().expect("can't find the home directory"); + let home = dirs_next::home_dir().context("can't find the home directory")?; // Separate file config so we can include year, month and day in file logs let file_config = fern::Dispatch::new() @@ -51,7 +51,7 @@ pub struct Args { files: Vec<PathBuf>, } -fn main() { +fn main() -> Result<()> { let help = format!( "\ {} {} @@ -89,7 +89,7 @@ FLAGS: verbosity = 1; } - setup_logging(verbosity).expect("failed to initialize logging."); + setup_logging(verbosity).context("failed to initialize logging")?; let args = Args { files: pargs.finish().into_iter().map(|arg| arg.into()).collect(), @@ -105,17 +105,16 @@ FLAGS: .as_deref() .unwrap_or(include_bytes!("../../languages.toml")); - LOADER.get_or_init(|| { - let config = toml::from_slice(toml).expect("Could not parse languages.toml"); - Loader::new(config) - }); + let config = toml::from_slice(toml).context("Could not parse languages.toml")?; + LOADER.get_or_init(|| Loader::new(config)); - let runtime = tokio::runtime::Runtime::new().unwrap(); + let runtime = tokio::runtime::Runtime::new().context("unable to start tokio runtime")?; // TODO: use the thread local executor to spawn the application task separately from the work pool + let mut app = Application::new(args).context("unable to create new appliction")?; runtime.block_on(async move { - let mut app = Application::new(args).unwrap(); - app.run().await; }); + + Ok(()) } |