diff --git a/src/main.rs b/src/main.rs index fa83a81..1b7b000 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,7 @@ mod vm; +use std::{env, fs}; +use std::io::{stderr, Write}; use std::sync::Arc; use vm::FootVM; @@ -111,16 +113,25 @@ impl ApplicationHandler for App } } -const ASM_SRC: &'static str = include_str!("../examples/first.asm"); - fn main() { - let mut vm = FootVM::new(); - vm.load(ASM_SRC, Some(&mut std::io::stderr())).expect(""); + let args: Vec = env::args().collect(); + if args.len() < 2 + { + _ = stderr().write("No filename supplied".as_bytes()) + } + else + { + let src = fs::read_to_string(&args[1]) + .expect("Unable to read file"); - let event_loop = EventLoop::new().unwrap(); - event_loop.set_control_flow(ControlFlow::Poll); + let mut vm = FootVM::new(); + vm.load(src.as_str(), Some(&mut std::io::stderr())).expect(""); - let mut app = App::new(vm); - event_loop.run_app(&mut app).expect(""); + let event_loop = EventLoop::new().unwrap(); + event_loop.set_control_flow(ControlFlow::Poll); + + let mut app = App::new(vm); + event_loop.run_app(&mut app).expect(""); + } }