aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.rs23
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))]