fix: build script generates dead code warnings if versioning data is not used

This commit is contained in:
Chance 2025-04-07 22:21:50 -04:00 committed by BitSyndicate
parent 71bdff0854
commit db3d078935

View file

@ -1,18 +1,28 @@
use std::process::Command;
use std::env;
use std::path::Path;
use std::fs::OpenOptions;
use std::io::Write;
use build_print::*; use build_print::*;
use cargo_lock::Lockfile; use cargo_lock::Lockfile;
use std::env;
use std::fs::OpenOptions;
use std::io::Write;
use std::path::Path;
use std::process::Command;
fn get_git_info() -> String { fn get_git_info() -> String {
match Command::new("git").arg("describe").arg("--always").arg("--dirty").output() { match Command::new("git")
.arg("describe")
.arg("--always")
.arg("--dirty")
.output()
{
Ok(output) if output.status.success() => { Ok(output) if output.status.success() => {
String::from_utf8_lossy(&output.stdout).trim().to_string() String::from_utf8_lossy(&output.stdout).trim().to_string()
} }
_ => { _ => {
match Command::new("git").arg("rev-parse").arg("--abbrev-ref").arg("HEAD").output() { match Command::new("git")
.arg("rev-parse")
.arg("--abbrev-ref")
.arg("HEAD")
.output()
{
Ok(output) if output.status.success() => { Ok(output) if output.status.success() => {
let head = String::from_utf8_lossy(&output.stdout); let head = String::from_utf8_lossy(&output.stdout);
let head = head.trim(); let head = head.trim();
@ -28,7 +38,7 @@ fn get_git_info() -> String {
} }
} }
} }
static ALLOW_DEAD_CODE: &str = "#[allow(dead_code)]\n";
fn main() { fn main() {
if let Err(e) = built::write_built_file() { if let Err(e) = built::write_built_file() {
panic!("{e}"); panic!("{e}");
@ -36,13 +46,15 @@ fn main() {
let out_dir = env::var("OUT_DIR").unwrap(); let out_dir = env::var("OUT_DIR").unwrap();
let dest_path = Path::new(&out_dir).join("built.rs"); let dest_path = Path::new(&out_dir).join("built.rs");
let proj_root = env!("CARGO_MANIFEST_DIR").to_string(); let proj_root = env!("CARGO_MANIFEST_DIR").to_string();
let tmp = format!("{}/../Cargo.lock",proj_root); let tmp = format!("{}/../Cargo.lock", proj_root);
let lockfile_path = Path::new(&tmp).canonicalize().expect("INvalid"); let lockfile_path = Path::new(&tmp).canonicalize().expect("INvalid");
let cargo_version = match Command::new("cargo").arg("--version").output() { let cargo_version = match Command::new("cargo").arg("--version").output() {
Ok(output) if output.status.success() => { Ok(output) if output.status.success() => {
String::from_utf8_lossy(&output.stdout).trim().to_string() let mut version = String::new();
version.push_str(ALLOW_DEAD_CODE);
version.push_str(&String::from_utf8_lossy(&output.stdout).trim().to_string());
version
} }
_ => "unknown".to_string(), _ => "unknown".to_string(),
}; };
@ -50,7 +62,10 @@ fn main() {
let rustc_version = match Command::new("rustc").arg("--version").output() { let rustc_version = match Command::new("rustc").arg("--version").output() {
Ok(output) if output.status.success() => { Ok(output) if output.status.success() => {
String::from_utf8_lossy(&output.stdout).trim().to_string() let mut version = String::new();
version.push_str(ALLOW_DEAD_CODE);
version.push_str(&String::from_utf8_lossy(&output.stdout).trim().to_string());
version
} }
_ => "unknown".to_string(), _ => "unknown".to_string(),
}; };
@ -67,7 +82,13 @@ fn main() {
} }
}; };
writeln!(built_rs, "pub const GIT_COMMIT_HASH: &str = \"{}\";", git_info).unwrap(); writeln!(
built_rs,
"{}pub static GIT_COMMIT_HASH: &str = \"{}\";",
ALLOW_DEAD_CODE,
git_info
)
.unwrap();
match Lockfile::load(lockfile_path) { match Lockfile::load(lockfile_path) {
Ok(lockfile) => { Ok(lockfile) => {
@ -75,16 +96,17 @@ fn main() {
for package in lockfile.packages { for package in lockfile.packages {
let name = package.name.as_str(); let name = package.name.as_str();
if dependencies_to_track.contains(&name) { if dependencies_to_track.contains(&name) {
let version = package.version.to_string(); let version = package.version.to_string();
writeln!( writeln!(
built_rs, built_rs,
"pub const {}_VERSION: &str = \"{}\";", "{}pub static {}_VERSION: &str = \"{}\";",
name.to_uppercase().replace('-', "_"), ALLOW_DEAD_CODE,
version name.to_uppercase().replace('-', "_"),
) version
.unwrap(); )
} .unwrap();
}
} }
} }
Err(e) => { Err(e) => {
@ -92,7 +114,6 @@ fn main() {
} }
} }
std::println!("cargo:rerun-if-changed=Cargo.lock"); std::println!("cargo:rerun-if-changed=Cargo.lock");
std::println!("cargo:rerun-if-changed=.git/HEAD"); std::println!("cargo:rerun-if-changed=.git/HEAD");
std::println!("cargo:rerun-if-changed=.git/index"); std::println!("cargo:rerun-if-changed=.git/index");