#!/usr/bin/env rust-script use std::io::Write; let file_path = std::env::args().nth(1).ok_or("No argument")?; let data = std::fs::read(&file_path).map_err(|error| format!("Error opening '{}': {}", file_path, error))?; let year = 2015 + u16::from(data[0] % 8); let day = 1 + data[1] % 25; let part = 1 + data[2] % 2; println!("tail -c +4 \"{}\" | cargo run {} {} {}", file_path, year, day, part); let mut child = std::process::Command::new("cargo") .env("RUST_BACKTRACE", "1") .args(&["run", &year.to_string(), &day.to_string(), &part.to_string()]) .stdin(std::process::Stdio::piped()) .spawn()?; child.stdin .as_mut() .unwrap() .write_all(&data[3..])?; let _ = child.wait()?;