extern crate hmi2mid; use hmi2mid::Hmi2mid; fn main() { use std::io::{Read, Write}; let hmipaths : Vec = std::env::args().skip(1) .map(std::path::PathBuf::from).collect(); if hmipaths.is_empty() { println!("Missing required argument: 1 or more paths to HMI files"); std::process::exit(-1); } let mut hmi2mid = Hmi2mid::new(); for hmipath in hmipaths.into_iter() { let midpath = { let mut m = hmipath.clone(); m.set_extension("mid"); m }; let hmi_bytes = { let mut f = std::fs::File::open(hmipath).unwrap(); let mut v = Vec::new(); let _ = f.read_to_end(&mut v).unwrap(); v }; let mid_bytes = hmi2mid.hmi_rip(hmi_bytes).unwrap(); let mut f = std::fs::File::create(midpath).unwrap(); let _ = f.write_all (&mid_bytes).unwrap(); } }