extern crate protoc_rust;
fn main() {
use std::env;
use std::fs;
use std::panic;
use std::path::PathBuf;
let curdir_str = match env::current_dir() {
Ok(p) => p.to_str().unwrap_or("").to_string(),
Err(_) => "".to_string()
};
let has_cratesfyi = curdir_str.contains("cratesfyi");
let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap_or(String::new());
let mut pbuf_rs_file = PathBuf::from(&manifest_dir);
pbuf_rs_file.push("src");
pbuf_rs_file.push("sysadminctl.rs");
let file_exists = match fs::metadata(&pbuf_rs_file) {
Ok(f) => f.is_file(),
Err(_) => false
};
println!("current dir: {:?}", curdir_str);
println!("\"cratesfyi\" found in path: {:?}", has_cratesfyi);
println!("systemctl.rs path: {:?}", pbuf_rs_file);
println!("systemctl.rs exists: {:?}", file_exists);
let args = protoc_rust::Args {
out_dir: "src",
input: &["src/sysadminctl.proto"],
includes: &["src"]
};
let result = panic::catch_unwind(|| {
protoc_rust::run(args).expect("protoc");
});
if !(has_cratesfyi && file_exists) {
println!(
"This doesn't look like \"cargo doc\" so any \
panics will be unwound."
);
if let Err(err) = result {
println!("Panics encountered!");
panic::resume_unwind(err);
}
}
}