| use std::ffi::OsString; | |
| use std::path::PathBuf; | |
| use std::process::{self, Command}; | |
| use std::{env, fs}; | |
| fn main() { | |
| let args: Vec<OsString> = 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::<Vec<_>>().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)); | |
| } | |
| } |