From 95193284f463166608b8c381f1ea4a7df9a89db8 Mon Sep 17 00:00:00 2001 From: Kevin Hoerr Date: Mon, 4 May 2026 15:14:54 -0400 Subject: main.rs: Crash gracefully with app init_context error --- src/main.rs | 23 +++++++++++++++-------- 1 file 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 = 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))] -- cgit v1.3