extern crate vergen;
use vergen::*;
macro_rules! stderr(
($($arg:tt)*) => (
match writeln!(&mut ::std::io::stderr(), $($arg)+ ) {
Ok(_) => {},
Err(x) => panic!("Unable to write to stderr: {}", x),
}
)
);
#[cfg(not(feature = "serde_macros"))]
mod inner {
extern crate glob;
extern crate syntex;
extern crate serde_codegen;
use std::env;
use std::fs;
use std::io::Write;
use std::path::Path;
use std::result::Result;
pub fn main() {
let out_dir = match env::var("OUT_DIR") {
Ok(d) => d,
Err(e) => panic!("Cannot find OUT_DIR: {}", e),
};
for path in glob::glob("src/**/*.in").unwrap().filter_map(Result::ok) {
let src = path.clone();
let mut components = path.components();
components.next();
let temp = Path::new(&out_dir).join(components.as_path());
let parent = match temp.parent() {
Some(p) => {
let _ = fs::create_dir_all(p);
p
}
None => panic!("Could not determine parent!"),
};
let out_file_name = match temp.file_stem() {
Some(fs) => fs,
None => panic!("Unable to determine file stem!"),
};
let dst = parent.join(out_file_name);
stderr!("SRC: {}, DST: {}", src.display(), dst.display());
let mut registry = syntex::Registry::new();
serde_codegen::register(&mut registry);
registry.expand("", &src, &dst).unwrap();
}
}
}
#[cfg(feature = "serde_macros")]
mod inner {
pub fn main() {}
}
fn main() {
let mut flags = OutputFns::all();
flags.toggle(NOW);
assert!(vergen(flags).is_ok());
inner::main();
}