diff --git a/src/grep_cmd.rs b/src/grep_cmd.rs index f4be80d..03c5a85 100644 --- a/src/grep_cmd.rs +++ b/src/grep_cmd.rs @@ -44,10 +44,18 @@ pub fn run( .context("grep/rg failed")?; let stdout = String::from_utf8_lossy(&output.stdout); + let exit_code = output.status.code().unwrap_or(1); let raw_output = stdout.to_string(); if stdout.trim().is_empty() { + // Show stderr for errors (bad regex, missing file, etc.) + if exit_code == 2 { + let stderr = String::from_utf8_lossy(&output.stderr); + if !stderr.trim().is_empty() { + eprintln!("{}", stderr.trim()); + } + } let msg = format!("🔍 0 for '{}'", pattern); println!("{}", msg); timer.track( @@ -56,6 +64,9 @@ pub fn run( &raw_output, &msg, ); + if exit_code != 0 { + std::process::exit(exit_code); + } return Ok(()); } @@ -121,6 +132,10 @@ pub fn run( &rtk_output, ); + if exit_code != 0 { + std::process::exit(exit_code); + } + Ok(()) }