2022-09-15 20:16:37 +00:00
|
|
|
use std::process;
|
|
|
|
|
2022-08-28 12:55:09 +00:00
|
|
|
use oyster_lineedit::readline;
|
|
|
|
use oyster_parser::ast::Code;
|
2022-09-15 20:16:37 +00:00
|
|
|
use oyster_runtime::{Shell, Status};
|
2022-08-28 12:55:09 +00:00
|
|
|
|
2022-07-14 22:26:57 +00:00
|
|
|
fn main() {
|
2022-09-23 21:07:57 +00:00
|
|
|
let mut shell = Shell::new().unwrap();
|
2022-10-20 13:06:53 +00:00
|
|
|
shell.builtins_mut().add_defaults();
|
2022-09-15 20:16:37 +00:00
|
|
|
let mut exit_code = Status::SUCCESS;
|
|
|
|
|
2022-10-26 14:24:05 +00:00
|
|
|
while shell.is_running() {
|
2022-08-28 12:55:09 +00:00
|
|
|
let prog = readline("> ").unwrap();
|
2022-09-15 20:16:37 +00:00
|
|
|
let ast = Code::try_from(prog.as_ref()).unwrap();
|
|
|
|
exit_code = shell.run(&ast).unwrap();
|
2022-08-28 12:55:09 +00:00
|
|
|
}
|
2022-09-15 20:16:37 +00:00
|
|
|
|
|
|
|
process::exit(exit_code.0);
|
2022-07-14 22:26:57 +00:00
|
|
|
}
|