-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild.rs
55 lines (49 loc) · 1.44 KB
/
build.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
use std::{borrow::Cow, process::Command};
fn main() {
generate_cargo_keys();
}
/// Generate the cargo keys
pub fn generate_cargo_keys() {
generate_cargo_key_git();
generate_cargo_key_build_date();
}
pub fn generate_cargo_key_build_date() {
let build_date = match Command::new("date").args(["-u", "+%FT%TZ"]).output() {
Ok(o) if o.status.success() => {
let sha = String::from_utf8_lossy(&o.stdout).trim().to_owned();
Cow::from(sha)
},
Ok(o) => {
let status = o.status;
println!("cargo:warning=Failed fetching the date timestamp: {status}");
Cow::from("unknown")
},
Err(err) => {
println!("cargo:warning=Failed fetching the datge: {err}");
Cow::from("unknown")
},
};
println!("cargo:rustc-env=PRDOC_CLI_BUILD_DATE={build_date}");
}
pub fn generate_cargo_key_git() {
let commit = if let Ok(hash) = std::env::var("PRDOC_CLI_GIT_COMMIT_HASH") {
Cow::from(hash.trim().to_owned())
} else {
match Command::new("git").args(["rev-parse", "--short=11", "HEAD"]).output() {
Ok(o) if o.status.success() => {
let tmsp = String::from_utf8_lossy(&o.stdout).trim().to_owned();
Cow::from(tmsp)
},
Ok(o) => {
let status = o.status;
println!("cargo:warning=Git command failed with status: {status}");
Cow::from("unknown")
},
Err(err) => {
println!("cargo:warning=Failed to execute git command: {err}");
Cow::from("unknown")
},
}
};
println!("cargo:rustc-env=PRDOC_CLI_GIT_COMMIT_HASH={commit}");
}