use std::ffi::OsString; use std::path::PathBuf; use std::process::{self, Command}; use std::{env, fs}; fn main() { let args: Vec = env::args_os().collect(); let log_path = env::var_os("BUILDER_LOG").map(PathBuf::from).expect("BUILDER_LOG must be set"); let real_rustc = env::var_os("REAL_RUSTC").expect("REAL_RUSTC must be set"); let log_contents = args.iter().skip(1).map(|arg| arg.to_string_lossy()).collect::>().join("\n"); fs::write(&log_path, log_contents).expect("failed to write builder log"); let status = Command::new(real_rustc) .args(args.iter().skip(1)) .status() .expect("failed to invoke real rustc"); if !status.success() { process::exit(status.code().unwrap_or(1)); } }