diff --git a/Cargo.lock b/Cargo.lock index 40f1c3f..0cbab1c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1164,7 +1164,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "xplr" -version = "0.2.17" +version = "0.2.18" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index d3b9e4d..4cdd04a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xplr" -version = "0.2.17" # Update app.rs +version = "0.2.18" # Update app.rs authors = ["Arijit Basu "] edition = "2018" description = "A hackable, minimal, fast TUI file explorer, stealing ideas from nnn and fzf" diff --git a/src/app.rs b/src/app.rs index 96102b7..916db65 100644 --- a/src/app.rs +++ b/src/app.rs @@ -14,7 +14,7 @@ use std::fs; use std::io; use std::path::PathBuf; -pub const VERSION: &str = "v0.2.17"; // Update Cargo.toml +pub const VERSION: &str = "v0.2.18"; // Update Cargo.toml pub const TEMPLATE_TABLE_ROW: &str = "TEMPLATE_TABLE_ROW"; diff --git a/src/main.rs b/src/main.rs index 8494408..9ffe978 100644 --- a/src/main.rs +++ b/src/main.rs @@ -207,7 +207,7 @@ fn main() -> Result<()> { let session_path = app.session_path(); let result = app.result_str(); - let _ = std::process::Command::new(cmd.command.clone()) + let status = std::process::Command::new(cmd.command.clone()) .current_dir(app.pwd()) .env("XPLR_PID", pid) .env("XPLR_INPUT_BUFFER", input_buffer) @@ -224,7 +224,20 @@ fn main() -> Result<()> { .env("XPLR_DIRECTORY_NODES", directory_nodes) .env("XPLR_LOGS", logs) .args(cmd.args.clone()) - .status(); + .status() + .map(|s| { + if s.success() { + Ok(()) + } else { + Err(format!("process exited with code {}", &s)) + } + }) + .unwrap_or_else(|e| Err(e.to_string())); + + if let Err(e) = status { + let msg = app::MsgIn::External(app::ExternalMsg::LogError(e)); + tx_msg_in.send(app::Task::new(1, msg, None))?; + }; terminal.hide_cursor()?; execute!(terminal.backend_mut(), term::EnterAlternateScreen)?;