Skip to content

Commit

Permalink
improve error reporting
Browse files Browse the repository at this point in the history
  • Loading branch information
ValeryAntopol committed May 31, 2024
1 parent 30aaa28 commit 6a3a7b8
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions tools/cli/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
* limitations under the License.
*/

use std::fmt::Formatter;
use std::process::Command;
use std::process::Stdio;

Expand All @@ -32,13 +33,36 @@ fn run_command<T: Into<Stdio>>(
mut command: Command,
stdout_config: T,
) -> Result<String, anyhow::Error> {
let process = command.stdout(stdout_config).spawn()?;
let process = command.stdout(stdout_config).spawn().map_err(|e| {
anyhow::anyhow!(
r#"Cannot run "{}": {}"#,
command.get_program().to_string_lossy(),
e
)
})?;

let output = process.wait_with_output()?;
if !output.status.success() {
anyhow::bail!("failed to execute, exited with {}", output.status)
anyhow::bail!(
r#"command "{}" exited with {}"#,
PrintCommand(&command),
output.status
)
}

let stdout = String::from_utf8_lossy(&output.stdout).into_owned();
Ok(stdout)
}

struct PrintCommand<'c>(&'c Command);

impl<'c> std::fmt::Display for PrintCommand<'c> {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.0.get_program().to_string_lossy())?;
for arg in self.0.get_args() {
write!(f, " {}", arg.to_string_lossy())?;
}

Ok(())
}
}

0 comments on commit 6a3a7b8

Please sign in to comment.