fix: build script generates dead code warnings if versioning data is not used
This commit is contained in:
parent
71bdff0854
commit
db3d078935
1 changed files with 45 additions and 24 deletions
|
@ -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");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue