fix: improve extension startup error messages with command details (#2694)

Co-authored-by: Michael Neale <michael.neale@gmail.com>
This commit is contained in:
wonrax
2025-07-15 23:26:30 +07:00
committed by GitHub
parent e048f7d6f7
commit 73d66ebfcf
2 changed files with 17 additions and 4 deletions

View File

@@ -225,9 +225,22 @@ impl StdioTransport {
#[cfg(windows)]
command.creation_flags(0x08000000); // CREATE_NO_WINDOW flag
let mut process = command
.spawn()
.map_err(|e| Error::StdioProcessError(e.to_string()))?;
let mut process = command.spawn().map_err(|e| {
let command = command.into_std();
Error::StdioProcessError(format!(
"Could not run extension command (`{} {}`): {}",
command
.get_program()
.to_str()
.unwrap_or("[invalid command]"),
command
.get_args()
.map(|arg| arg.to_str().unwrap_or("[invalid arg]"))
.collect::<Vec<_>>()
.join(" "),
e
))
})?;
let stdin = process
.stdin

View File

@@ -172,7 +172,7 @@ When the keyring is disabled, secrets are stored here:
Many of the external extensions require a package runner. For example, if you run into an error like this one:
```
Failed to start extension: {extension name}, "No such file or directory (os error 2)"
Failed to start extension `{extension name}`: Could not run extension command (`{extension command}`): No such file or directory (os error 2)
Please check extension configuration for {extension name}.
```