1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use std::process::Command;
fn main() {
// Release builds set RANGER_VERSION externally; don't override.
if std::env::var("RANGER_VERSION").is_ok() {
return;
}
let date = cmd("date", &["-u", "+%Y-%m-%d"]).unwrap_or("0000-00-00".into());
let commit = cmd("git", &["rev-parse", "--short=8", "HEAD"]).unwrap_or("unknown".into());
let version = format!("{date}-dev+{commit}");
println!("cargo:rustc-env=RANGER_VERSION={version}");
}
fn cmd(program: &str, args: &[&str]) -> Option<String> {
let output = Command::new(program).args(args).output().ok()?;
if !output.status.success() {
return None;
}
let s = String::from_utf8_lossy(&output.stdout).trim().to_string();
if s.is_empty() { None } else { Some(s) }
}