48a59496b2
ci / test (push) Has been cancelled
ci / fuzz-smoke (push) Has been cancelled
ci / windows-client (push) Has been cancelled
ci / package-release (linux-x86_64, ubuntu-latest) (push) Has been cancelled
ci / package-release (macos-aarch64, macos-14) (push) Has been cancelled
ci / package-release (macos-x86_64, macos-13) (push) Has been cancelled
ci / package-release (windows-x86_64, windows-latest) (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
27 lines
923 B
Rust
27 lines
923 B
Rust
use std::process::Command;
|
|
|
|
fn git(args: &[&str]) -> Option<String> {
|
|
let output = Command::new("git").args(args).output().ok()?;
|
|
if !output.status.success() {
|
|
return None;
|
|
}
|
|
let text = String::from_utf8(output.stdout).ok()?;
|
|
Some(text.trim().to_string())
|
|
}
|
|
|
|
fn main() {
|
|
println!("cargo:rerun-if-changed=.git/HEAD");
|
|
println!("cargo:rerun-if-changed=.git/index");
|
|
|
|
let hash = git(&["rev-parse", "--short=12", "HEAD"]).unwrap_or_else(|| "unknown".into());
|
|
let date = git(&["show", "-s", "--format=%cs", "HEAD"]).unwrap_or_else(|| "unknown".into());
|
|
let dirty = Command::new("git")
|
|
.args(["diff", "--quiet", "--ignore-submodules", "--"])
|
|
.status()
|
|
.map(|status| if status.success() { "" } else { "+dirty" })
|
|
.unwrap_or("");
|
|
|
|
println!("cargo:rustc-env=DOSH_GIT_HASH={hash}{dirty}");
|
|
println!("cargo:rustc-env=DOSH_COMMIT_DATE={date}");
|
|
}
|