a8cf0c6b90
The unwrap (or '.ok()' rather) triggers for some errors but not negative status codes. In the case where helix is being packaged in an empty git repository, the existing mechanism will fail because git init git rev-parse HEAD gives a negative exit code and prints to stderr stderr: "fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.... with a stdout of "HEAD\n" (too short to slice with [..8]).
18 lines
544 B
Rust
18 lines
544 B
Rust
use std::borrow::Cow;
|
|
use std::process::Command;
|
|
|
|
fn main() {
|
|
let git_hash = Command::new("git")
|
|
.args(&["rev-parse", "HEAD"])
|
|
.output()
|
|
.ok()
|
|
.filter(|output| output.status.success())
|
|
.and_then(|x| String::from_utf8(x.stdout).ok());
|
|
|
|
let version: Cow<_> = match git_hash {
|
|
Some(git_hash) => format!("{} ({})", env!("CARGO_PKG_VERSION"), &git_hash[..8]).into(),
|
|
None => env!("CARGO_PKG_VERSION").into(),
|
|
};
|
|
|
|
println!("cargo:rustc-env=VERSION_AND_GIT_HASH={}", version);
|
|
}
|