use osdb::branding::startup_msg; use osdb::cli::{history_file, read_input}; use osdb::error_display::OSDBError as _; use osdb::parser::parse; fn main() { let mut rl = rustyline::DefaultEditor::new().expect("failed to create stdin reader"); let history_file = history_file(); if let Some(history_file) = &history_file { let _ = rl.load_history(history_file); } println!("{}", startup_msg()); 'main: while let Some(input) = read_input(&mut rl) { let file = String::from(""); match parse(file.clone(), input.clone()) { Ok(cmds) => { for cmd in cmds { let result = cmd.execute(); if result.should_exit { break 'main; } println!("{}", result.display()); } } Err(errs) => { for err in errs { err.display(&file, &input) } } } } if let Some(history_file) = &history_file { let _ = rl.save_history(history_file); } println!("Good-bye"); }