mirror of https://github.com/encounter/objdiff.git
Improve build log message when command doesn't exist
Before, it didn't include the actual command that was attempted to run.
This commit is contained in:
parent
2ec17aee9b
commit
b0123b3f83
|
@ -1,7 +1,6 @@
|
||||||
use std::{
|
use std::{
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
process::Command,
|
process::Command,
|
||||||
str::from_utf8,
|
|
||||||
sync::mpsc::Receiver,
|
sync::mpsc::Receiver,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -91,13 +90,6 @@ pub(crate) fn run_make(config: &BuildConfig, arg: &Path) -> BuildStatus {
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
match run_make_cmd(config, cwd, arg) {
|
|
||||||
Ok(status) => status,
|
|
||||||
Err(e) => BuildStatus { success: false, stderr: e.to_string(), ..Default::default() },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn run_make_cmd(config: &BuildConfig, cwd: &Path, arg: &Path) -> Result<BuildStatus> {
|
|
||||||
let make = config.custom_make.as_deref().unwrap_or("make");
|
let make = config.custom_make.as_deref().unwrap_or("make");
|
||||||
let make_args = config.custom_args.as_deref().unwrap_or(&[]);
|
let make_args = config.custom_args.as_deref().unwrap_or(&[]);
|
||||||
#[cfg(not(windows))]
|
#[cfg(not(windows))]
|
||||||
|
@ -144,15 +136,23 @@ fn run_make_cmd(config: &BuildConfig, cwd: &Path, arg: &Path) -> Result<BuildSta
|
||||||
cmdline.push(' ');
|
cmdline.push(' ');
|
||||||
cmdline.push_str(shell_escape::escape(arg.to_string_lossy()).as_ref());
|
cmdline.push_str(shell_escape::escape(arg.to_string_lossy()).as_ref());
|
||||||
}
|
}
|
||||||
let output = command.output().map_err(|e| anyhow!("Failed to execute build: {e}"))?;
|
let output = match command.output() {
|
||||||
let stdout = from_utf8(&output.stdout).context("Failed to process stdout")?;
|
Ok(output) => output,
|
||||||
let stderr = from_utf8(&output.stderr).context("Failed to process stderr")?;
|
Err(e) => {
|
||||||
Ok(BuildStatus {
|
return BuildStatus {
|
||||||
success: output.status.code().unwrap_or(-1) == 0,
|
success: false,
|
||||||
cmdline,
|
cmdline,
|
||||||
stdout: stdout.to_string(),
|
stdout: Default::default(),
|
||||||
stderr: stderr.to_string(),
|
stderr: e.to_string(),
|
||||||
})
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// Try from_utf8 first to avoid copying the buffer if it's valid, then fall back to from_utf8_lossy
|
||||||
|
let stdout = String::from_utf8(output.stdout)
|
||||||
|
.unwrap_or_else(|e| String::from_utf8_lossy(e.as_bytes()).into_owned());
|
||||||
|
let stderr = String::from_utf8(output.stderr)
|
||||||
|
.unwrap_or_else(|e| String::from_utf8_lossy(e.as_bytes()).into_owned());
|
||||||
|
BuildStatus { success: output.status.success(), cmdline, stdout, stderr }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_build(
|
fn run_build(
|
||||||
|
|
Loading…
Reference in New Issue