mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 01:16:18 +04:00
output stderr
in :sh
popup if shell commands fail (#11239)
* refactor(commands): output `stderr` in `:sh` popup * refactor(commands): switch to `from_utf8_lossy` This way something is always displayed. * refactor: no longer log stderr output on failure
This commit is contained in:
parent
63953e0b9e
commit
cfe80acb6f
@ -5716,27 +5716,24 @@ async fn shell_impl_async(
|
||||
process.wait_with_output().await?
|
||||
};
|
||||
|
||||
if !output.status.success() {
|
||||
if !output.stderr.is_empty() {
|
||||
let err = String::from_utf8_lossy(&output.stderr).to_string();
|
||||
log::error!("Shell error: {}", err);
|
||||
bail!("Shell error: {}", err);
|
||||
}
|
||||
match output.status.code() {
|
||||
Some(exit_code) => bail!("Shell command failed: status {}", exit_code),
|
||||
None => bail!("Shell command failed"),
|
||||
let output = if !output.status.success() {
|
||||
if output.stderr.is_empty() {
|
||||
match output.status.code() {
|
||||
Some(exit_code) => bail!("Shell command failed: status {}", exit_code),
|
||||
None => bail!("Shell command failed"),
|
||||
}
|
||||
}
|
||||
String::from_utf8_lossy(&output.stderr)
|
||||
// Prioritize `stderr` output over `stdout`
|
||||
} else if !output.stderr.is_empty() {
|
||||
log::debug!(
|
||||
"Command printed to stderr: {}",
|
||||
String::from_utf8_lossy(&output.stderr).to_string()
|
||||
);
|
||||
}
|
||||
let stderr = String::from_utf8_lossy(&output.stderr);
|
||||
log::debug!("Command printed to stderr: {stderr}");
|
||||
stderr
|
||||
} else {
|
||||
String::from_utf8_lossy(&output.stdout)
|
||||
};
|
||||
|
||||
let str = std::str::from_utf8(&output.stdout)
|
||||
.map_err(|_| anyhow!("Process did not output valid UTF-8"))?;
|
||||
let tendril = Tendril::from(str);
|
||||
Ok(tendril)
|
||||
Ok(Tendril::from(output))
|
||||
}
|
||||
|
||||
fn shell(cx: &mut compositor::Context, cmd: &str, behavior: &ShellBehavior) {
|
||||
|
@ -2308,7 +2308,7 @@ fn run_shell_command(
|
||||
));
|
||||
compositor.replace_or_push("shell", popup);
|
||||
}
|
||||
editor.set_status("Command succeeded");
|
||||
editor.set_status("Command run");
|
||||
},
|
||||
));
|
||||
Ok(call)
|
||||
|
Loading…
Reference in New Issue
Block a user