mirror of
https://github.com/nushell/nushell.git
synced 2025-02-23 05:51:28 +01:00
Make external app error uniform (#812)
This commit is contained in:
parent
47d004ae24
commit
b58aad5eb0
@ -67,6 +67,8 @@ impl Command for External {
|
|||||||
} else {
|
} else {
|
||||||
return Err(ShellError::ExternalCommand(
|
return Err(ShellError::ExternalCommand(
|
||||||
"Cannot convert argument to a string".into(),
|
"Cannot convert argument to a string".into(),
|
||||||
|
"All arguments to an external command need to be string-compatible"
|
||||||
|
.into(),
|
||||||
val.span()?,
|
val.span()?,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@ -74,6 +76,7 @@ impl Command for External {
|
|||||||
} else {
|
} else {
|
||||||
return Err(ShellError::ExternalCommand(
|
return Err(ShellError::ExternalCommand(
|
||||||
"Cannot convert argument to a string".into(),
|
"Cannot convert argument to a string".into(),
|
||||||
|
"All arguments to an external command need to be string-compatible".into(),
|
||||||
arg.span()?,
|
arg.span()?,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@ -141,7 +144,8 @@ impl<'call> ExternalCommand<'call> {
|
|||||||
|
|
||||||
match process.spawn() {
|
match process.spawn() {
|
||||||
Err(err) => Err(ShellError::ExternalCommand(
|
Err(err) => Err(ShellError::ExternalCommand(
|
||||||
format!("{}", err),
|
"can't run executable".to_string(),
|
||||||
|
err.to_string(),
|
||||||
self.name.span,
|
self.name.span,
|
||||||
)),
|
)),
|
||||||
Ok(mut child) => {
|
Ok(mut child) => {
|
||||||
@ -186,6 +190,8 @@ impl<'call> ExternalCommand<'call> {
|
|||||||
let stdout = child.stdout.take().ok_or_else(|| {
|
let stdout = child.stdout.take().ok_or_else(|| {
|
||||||
ShellError::ExternalCommand(
|
ShellError::ExternalCommand(
|
||||||
"Error taking stdout from external".to_string(),
|
"Error taking stdout from external".to_string(),
|
||||||
|
"Redirects need access to stdout of an external command"
|
||||||
|
.to_string(),
|
||||||
span,
|
span,
|
||||||
)
|
)
|
||||||
})?;
|
})?;
|
||||||
@ -220,7 +226,11 @@ impl<'call> ExternalCommand<'call> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
match child.wait() {
|
match child.wait() {
|
||||||
Err(err) => Err(ShellError::ExternalCommand(format!("{}", err), span)),
|
Err(err) => Err(ShellError::ExternalCommand(
|
||||||
|
"External command exited with error".into(),
|
||||||
|
err.to_string(),
|
||||||
|
span,
|
||||||
|
)),
|
||||||
Ok(_) => Ok(()),
|
Ok(_) => Ok(()),
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -142,8 +142,8 @@ pub enum ShellError {
|
|||||||
),
|
),
|
||||||
|
|
||||||
#[error("External command")]
|
#[error("External command")]
|
||||||
#[diagnostic(code(nu::shell::external_command), url(docsrs))]
|
#[diagnostic(code(nu::shell::external_command), url(docsrs), help("{1}"))]
|
||||||
ExternalCommand(String, #[label("{0}")] Span),
|
ExternalCommand(String, String, #[label("{0}")] Span),
|
||||||
|
|
||||||
#[error("Unsupported input")]
|
#[error("Unsupported input")]
|
||||||
#[diagnostic(code(nu::shell::unsupported_input), url(docsrs))]
|
#[diagnostic(code(nu::shell::unsupported_input), url(docsrs))]
|
||||||
|
@ -75,9 +75,5 @@ pub fn fail_test(input: &str, expected: &str) -> TestResult {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
pub fn not_found_msg() -> &'static str {
|
pub fn not_found_msg() -> &'static str {
|
||||||
if cfg!(windows) {
|
"can't run executable"
|
||||||
"not found"
|
|
||||||
} else {
|
|
||||||
"No such"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user