extern crate vergen; extern crate protobuf_macros; extern crate rand; use rand::Rng; use std::env; use std::path::PathBuf; use std::fs::OpenOptions; use std::io::Write; fn main() { let out = PathBuf::from(env::var("OUT_DIR").unwrap()); vergen::vergen(vergen::OutputFns::all()).unwrap(); let build_id: String = rand::thread_rng() .gen_ascii_chars() .take(8) .collect(); let mut version_file = OpenOptions::new() .write(true) .append(true) .open(&out.join("version.rs")) .unwrap(); let build_id_fn = format!(" /// Generate a random build id. pub fn build_id() -> &'static str {{ \"{}\" }} ", build_id); if let Err(e) = version_file.write_all(build_id_fn.as_bytes()) { println!("{}", e); } protobuf_macros::expand("src/lib.in.rs", &out.join("lib.rs")).unwrap(); println!("cargo:rerun-if-changed=src/lib.in.rs"); println!("cargo:rerun-if-changed=src/connection/mod.rs"); println!("cargo:rerun-if-changed=src/connection/codec.rs"); println!("cargo:rerun-if-changed=src/connection/handshake.rs"); }