handle error case where --wrapper-version argument doesn't exist
This commit is contained in:
parent
f50ad6cd8c
commit
5e67ce6803
1 changed files with 17 additions and 3 deletions
|
@ -4,15 +4,29 @@ use std::process::{Command, Stdio};
|
||||||
|
|
||||||
pub fn check(bad: &mut bool) {
|
pub fn check(bad: &mut bool) {
|
||||||
let result = Command::new("x").arg("--wrapper-version").stdout(Stdio::piped()).spawn();
|
let result = Command::new("x").arg("--wrapper-version").stdout(Stdio::piped()).spawn();
|
||||||
let child = match result {
|
// This runs the command inside a temporarily directory.
|
||||||
Ok(child) => child,
|
// This allows us to compare output of result to see if `--wrapper-version` is not a recognized argument to x.
|
||||||
Err(e) => match e.kind() {
|
let temp_result = Command::new("x").arg("--wrapper-version").current_dir(std::env::temp_dir()).stdout(Stdio::piped()).spawn();
|
||||||
|
|
||||||
|
let (child, temp_child) = match (result, temp_result) {
|
||||||
|
(Ok(child), Ok(temp_child)) => (child, temp_child),
|
||||||
|
// what would it mean if the temp cmd error'd?
|
||||||
|
(Ok(_child), Err(_e)) => todo!(),
|
||||||
|
(Err(e), _) => match e.kind() {
|
||||||
ErrorKind::NotFound => return,
|
ErrorKind::NotFound => return,
|
||||||
_ => return tidy_error!(bad, "failed to run `x`: {}", e),
|
_ => return tidy_error!(bad, "failed to run `x`: {}", e),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let output = child.wait_with_output().unwrap();
|
let output = child.wait_with_output().unwrap();
|
||||||
|
let temp_output = temp_child.wait_with_output().unwrap();
|
||||||
|
|
||||||
|
if output != temp_output {
|
||||||
|
return tidy_error!(
|
||||||
|
bad,
|
||||||
|
"Current version of x does not support the `--wrapper-version` argument\nConsider updating to the newer version of x by running `cargo install --path src/tools/x`"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if output.status.success() {
|
if output.status.success() {
|
||||||
let version = String::from_utf8_lossy(&output.stdout);
|
let version = String::from_utf8_lossy(&output.stdout);
|
||||||
|
|
Loading…
Add table
Reference in a new issue