use std::{env, process}; fn main() { println!("cargo:rustc-env=PLATFORM={}", env::var("TARGET").unwrap()); println!("cargo:rustc-env=BUILD_DATE={}", sh("date +%Y-%m-%d")); println!( "cargo:rustc-env=LPMLOCATION={}", env::var("LPMLOCATION").unwrap_or_else(|_| "~/ldpl/lpm/".into()) ); println!( "cargo:rustc-env=GIT_REF={}", sh("git rev-parse --short HEAD") ) } fn sh(args: &str) -> String { let args: Vec<&str> = args.split(' ').collect(); let cmd = args[0]; let args: Vec<_> = args.iter().skip(1).collect(); if let Ok(output) = process::Command::new(cmd).args(&args).output() { if !output.status.success() { eprintln!("Error running {} {:?}", cmd, args); return "???".to_string(); } String::from_utf8(output.stdout).unwrap() } else { "???".to_string() } }