diff options
Diffstat (limited to 'xtask/src/command.rs')
| -rw-r--r-- | xtask/src/command.rs | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/xtask/src/command.rs b/xtask/src/command.rs index 187a3dd..3596897 100644 --- a/xtask/src/command.rs +++ b/xtask/src/command.rs @@ -765,6 +765,10 @@ pub fn run_command(command: &CargoCommand, stderr_mode: OutputMode) -> anyhow::R log::info!("\n{}", stdout); } + if !exit_status.success() { + log::error!("❌ Command failed. Run to completion for the summary."); + } + Ok(RunResult { exit_status, stdout, @@ -825,32 +829,19 @@ pub fn handle_results(globals: &Globals, results: Vec<FinalRunResult>) -> Result }); let log_stdout_stderr = |level: Level| { - move |(command, stdout, stderr): (&CargoCommand, &String, &String)| { + move |(cmd, stdout, stderr): (&CargoCommand, &String, &String)| { + let cmd = cmd.as_cmd_string(); if !stdout.is_empty() && !stderr.is_empty() { - log::log!( - level, - "Output for \"{command}\"\nStdout:\n{stdout}\nStderr:\n{stderr}" - ); + log::log!(level, "\n{cmd}\nStdout:\n{stdout}\nStderr:\n{stderr}"); } else if !stdout.is_empty() { - log::log!( - level, - "Output for \"{command}\":\nStdout:\n{}", - stdout.trim_end() - ); + log::log!(level, "\n{cmd}\nStdout:\n{}", stdout.trim_end()); } else if !stderr.is_empty() { - log::log!( - level, - "Output for \"{command}\"\nStderr:\n{}", - stderr.trim_end() - ); + log::log!(level, "\n{cmd}\nStderr:\n{}", stderr.trim_end()); } } }; - successes.clone().for_each(log_stdout_stderr(Level::Debug)); - errors.clone().for_each(log_stdout_stderr(Level::Error)); - - successes.for_each(|(cmd, _, _)| { + successes.for_each(|(cmd, stdout, stderr)| { let path = if let Some(dir) = cmd.chdir() { let path = dir.as_os_str().to_str().unwrap_or("Not displayable"); format!(" (in {path}") @@ -863,15 +854,18 @@ pub fn handle_results(globals: &Globals, results: Vec<FinalRunResult>) -> Result } else { info!("✅ Success: {cmd}{path}"); } + + log_stdout_stderr(Level::Debug)((cmd, stdout, stderr)); }); - errors.clone().for_each(|(cmd, _, _)| { + errors.clone().for_each(|(cmd, stdout, stderr)| { if let Some(dir) = cmd.chdir() { let path = dir.as_os_str().to_str().unwrap_or("Not displayable"); error!("❌ Failed: {cmd} (in {path}) \n {}", cmd.as_cmd_string()); } else { error!("❌ Failed: {cmd}\n {}", cmd.as_cmd_string()); } + log_stdout_stderr(Level::Error)((cmd, stdout, stderr)); }); command_errors |
