Files
SukiSU-Ultra/userspace/ksud/build.rs
2023-02-03 21:02:11 +08:00

44 lines
1.4 KiB
Rust

use std::env;
use std::fs::File;
use std::io::Write;
use std::path::Path;
use std::process::Command;
fn get_git_version() -> (u32, String) {
let version_code = String::from_utf8(
Command::new("git")
.args(["rev-list", "--count", "HEAD"])
.output()
.expect("Failed to get git count")
.stdout,
)
.expect("Failed to read git count stdout");
let version_code: u32 = version_code.trim().parse().expect("Failed to parse git count");
let version_code = 10000 + 200 + version_code; // For historical reasons
let version_name = String::from_utf8(
Command::new("git")
.args(["describe", "--tags", "--always"])
.output()
.expect("Failed to get git version")
.stdout,
)
.expect("Failed to read git version stdout");
(version_code, version_name)
}
fn main() {
let (code, name)= get_git_version();
let out_dir = env::var("OUT_DIR").expect("Failed to get $OUT_DIR");
let out_dir = Path::new(&out_dir);
File::create(Path::new(out_dir).join("VERSION_CODE"))
.expect("Failed to create VERSION_CODE")
.write_all(code.to_string().as_bytes())
.expect("Failed to write VERSION_CODE");
File::create(Path::new(out_dir).join("VERSION_NAME"))
.expect("Failed to create VERSION_NAME")
.write_all(name.trim().as_bytes())
.expect("Failed to write VERSION_NAME");
}