diff options
| author | Kevin Hoerr <kjhoerr@submelon.dev> | 2026-05-04 15:14:54 -0400 |
|---|---|---|
| committer | Kevin Hoerr <kjhoerr@submelon.dev> | 2026-05-04 15:14:54 -0400 |
| commit | 95193284f463166608b8c381f1ea4a7df9a89db8 (patch) | |
| tree | 39d563822753d8c6b1b43c928ec2ea27a5c01ef5 | |
| parent | 8d34b16b2b136c0507d24a73dab75519ddadffdf (diff) | |
| download | equity-tracker-95193284f463166608b8c381f1ea4a7df9a89db8.tar.gz equity-tracker-95193284f463166608b8c381f1ea4a7df9a89db8.tar.bz2 equity-tracker-95193284f463166608b8c381f1ea4a7df9a89db8.zip | |
main.rs: Crash gracefully with app init_context error
| -rw-r--r-- | src/main.rs | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/main.rs b/src/main.rs index 03c8115..befdd96 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,22 +20,26 @@ fn main() -> Result<()> { enable_raw_mode().into_diagnostic()?; let mut stdout = std::io::stdout(); + logging::initialize_logging().into_diagnostic()?; + execute!(stdout, EnterAlternateScreen, EnableMouseCapture).into_diagnostic()?; let backend = CrosstermBackend::new(stdout); let mut term = Terminal::new(backend).into_diagnostic()?; - logging::initialize_logging().into_diagnostic()?; - tracing::event!(tracing::Level::DEBUG, "App initialization started."); let mut app = App::default(); - app.init_context()?; + let init = app.init_context(); + let mut err: Option<miette::Report> = init.err(); - tracing::event!(tracing::Level::INFO, "App started."); + if err.is_none() { + tracing::event!(tracing::Level::INFO, "App started."); - // could be error, so don't unwrap; let term restore first - let run = run_app(&mut term, &mut app); + // could be error, so don't unwrap; let term restore first + let run = run_app(&mut term, &mut app); + err = run.err(); + } // restore terminal disable_raw_mode().into_diagnostic()?; @@ -46,8 +50,11 @@ fn main() -> Result<()> { ) .into_diagnostic()?; term.show_cursor().into_diagnostic()?; - run?; - Ok(()) + + match err { + None => Ok(()), + Some(e) => Err(e), + } } #[cfg(not(tarpaulin_include))] |
