diff --git a/src/main.rs b/src/main.rs index 05a1225..175b3fc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,7 @@ use terminal::Terminal; use pane::prelude::*; use std::fs::{remove_file, OpenOptions}; -use std::io::Error; +use std::io::{Error, ErrorKind}; use anyhow::{Result as AnyResult, Error as AnyError}; use clap::Parser; @@ -32,16 +32,22 @@ fn main() -> AnyResult<()> { .create_new(true) .open(LOG_FILE) .map_err(|e| { - >::into(e).context(LOG_FILE).context(LOG_EXISTS_MSG) + let kind = e.kind(); + let result = AnyError::from(e).context(LOG_FILE); + if kind == ErrorKind::AlreadyExists { + result.context(LOG_EXISTS_MSG) + } else { + result + } })?; let _redirect = Redirect::stderr(target)?; - do_tui(args)?; + let result = do_tui(args); remove_file(LOG_FILE)?; - - Ok(()) + + result.map_err(Into::into) } fn do_tui(args: Args) -> Result<(), Error> {