use dotenv::dotenv; use std::env; use std::fs::File; use std::io::Write; fn main() -> Result<(), Box> { tonic_build::configure() .build_server(false) .build_client(true) .compile_protos( &["../AobaServer/Proto/Aoba.proto", "../AobaServer/Proto/Auth.proto"], &["../AobaServer/Proto/"], )?; forward_env(); Ok(()) } fn forward_env() { let dest_path = "./src/env.rs"; let mut f = File::create(&dest_path).unwrap(); f.write_all(b"// This file is automatically generated by build.rs\n\n") .unwrap(); dotenv().ok(); for (key, value) in env::vars() { if key.starts_with("APP_") { f.write_all("#[allow(dead_code)]\n".as_bytes()).unwrap(); let line = format!( "pub const {}: &'static str = \"{}\";\n", key, value.replace("\"", "\\\"") ); f.write_all(line.as_bytes()).unwrap(); } } }