Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. fn parse(mut input: Vec<Token>)-> Result<(), Box<dyn std::error::Error>> {
  2.  
  3. while let Some((index, item)) = input.iter().enumerate().next() {
  4. "cd" => {
  5. println!("cd");
  6. let dir = Path::new(input.peekable()
  7. .peek()
  8. .map_or("/", |val| *val));
  9. // try to set to new dir, otherwise root
  10. if let Err(e) = env::set_current_dir(&dir) {
  11. return Err(Box::from(e))
  12. }
  13. else {
  14. return Ok(())
  15. }
  16. },
  17. "exit" | "q" => {
  18. std::process::exit(1);
  19. },
  20. command => {
  21. println!("command");
  22. let mut child = Command::new(command)
  23. .args(input)
  24. .spawn()?;
  25.  
  26. let code = child.wait();
  27. if code.is_err(){
  28. Err(format!("error executing, code {}", code.unwrap()).into())
  29. }
  30. else {
  31. Ok(())
  32. }
  33. },
  34. }
  35. Ok(())
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement