diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-05-07 18:47:05 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-07 18:47:05 +0000 |
| commit | 1ec82d4bdf47fa5ec1f8599757bbadae274d4f5a (patch) | |
| tree | 30b598248fe8d2f7ecfcc302d71ab96350c11934 | |
| parent | 0bc85ac7986347d50d2eb8403084d61ac33447a4 (diff) | |
| parent | 189f785749e9e6921ae1db4338c3d65c9da102cf (diff) | |
| download | rust-1ec82d4bdf47fa5ec1f8599757bbadae274d4f5a.tar.gz rust-1ec82d4bdf47fa5ec1f8599757bbadae274d4f5a.zip | |
Merge #8751
8751: minor: standard snippet r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
| -rw-r--r-- | crates/rust-analyzer/build.rs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/crates/rust-analyzer/build.rs b/crates/rust-analyzer/build.rs index bca6611d604..aceab82d9b0 100644 --- a/crates/rust-analyzer/build.rs +++ b/crates/rust-analyzer/build.rs @@ -51,16 +51,23 @@ fn rev() -> String { } fn commit_hash() -> Option<String> { - output_to_string("git rev-parse --short HEAD") + exec("git rev-parse --short HEAD").ok() } fn build_date() -> Option<String> { - output_to_string("date -u +%Y-%m-%d") + exec("date -u +%Y-%m-%d").ok() } -fn output_to_string(command: &str) -> Option<String> { +fn exec(command: &str) -> std::io::Result<String> { let args = command.split_ascii_whitespace().collect::<Vec<_>>(); - let output = Command::new(args[0]).args(&args[1..]).output().ok()?; - let stdout = String::from_utf8(output.stdout).ok()?; - Some(stdout.trim().to_string()) + let output = Command::new(args[0]).args(&args[1..]).output()?; + if !output.status.success() { + return Err(std::io::Error::new( + std::io::ErrorKind::InvalidData, + format!("command {:?} returned non-zero code", command,), + )); + } + let stdout = String::from_utf8(output.stdout) + .map_err(|err| std::io::Error::new(std::io::ErrorKind::InvalidData, err))?; + Ok(stdout.trim().to_string()) } |
