You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
867 B

  1. mod parse;
  2. mod prompt;
  3. use parse::parse_line;
  4. use rustyline::error::ReadlineError;
  5. use rustyline::{Editor, Result};
  6. use crate::prompt::Prompt;
  7. fn main() -> Result<()> {
  8. let mut rl = Editor::<()>::new()?;
  9. let mut prompt = Prompt::new();
  10. loop {
  11. let readline = rl.readline(&prompt.get_prompt());
  12. match readline {
  13. Ok(line) => {
  14. if let Err(e) = parse_line(&line) {
  15. println!("{}", e)
  16. }
  17. }
  18. Err(ReadlineError::Interrupted) => {
  19. println!("CTRL-C");
  20. break;
  21. }
  22. Err(ReadlineError::Eof) => {
  23. println!("CTRL-D");
  24. break;
  25. }
  26. Err(err) => {
  27. println!("Error: {:?}", err);
  28. break;
  29. }
  30. }
  31. }
  32. Ok(())
  33. }