diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs index 31133da..4eea403 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,10 +20,13 @@ fn main() -> io::Result<()> { let mut line = String::new(); stdin().read_line(&mut line).unwrap(); - let mut parts = line.trim().split_whitespace(); + let tmp = line.trim().split_whitespace() + .collect::<Vec<&str>>(); + let mut parts = tmp.iter() + .map(|x| substitute_vars(*x)); let command = parts.next().unwrap(); - match command { + match command.as_str() { "exit" => return Ok(()), "cd" => { // change directory @@ -34,15 +37,14 @@ fn main() -> io::Result<()> { env::set_current_dir(&cd)?; }, Some(p) => { - let tmp = substitute_vars(p); - let cd = Path::new(&tmp); + let cd = Path::new(&p); env::set_current_dir(&cd)?; } }; }, command => { let child = Command::new(command) - .args(parts.map(substitute_vars)) + .args(parts) .spawn(); match child { |
