use std::env;
use std::fs;
use std::io::Error;
use std::path::Path;
use walkdir::WalkDir;
fn main() -> Result<(), Error> {
let out_dir = env::var_os("OUT_DIR").unwrap();
let dest_path = Path::new(&out_dir).join("generated.rs");
let mut all_src = String::new();
for entry in WalkDir::new("src") {
match entry {
Ok(entry) => {
let path = entry.path();
if path.is_file() {
let contents = fs::read_to_string(path)?;
all_src += contents.as_str();
}
}
Err(err) => println!("cargo::error={}", err),
}
}
println!("cargo::warning={:?}", &all_src.len());
println!("cargo::rerun-if-changed=src/");
println!("cargo::rerun-if-changed=build.rs");
fs::write(
&dest_path,
format!(
"pub fn all() -> &'static str {{
r#####\"{all_src}\"#####
}}
"
),
)?;
Ok(())
}