diff options
| author | El-BG-1970 <elouangros@hotmail.com> | 2022-04-26 22:04:29 +0200 |
|---|---|---|
| committer | El-BG-1970 <elouangros@hotmail.com> | 2022-04-26 22:04:29 +0200 |
| commit | b7506a6fdfbc1ba75d263d9011c0521ba3e4e618 (patch) | |
| tree | 23e37a65868e85f923a4fcb6834a17d2c00777be | |
| parent | 1c6a3107e9200fdc6441fb9c714a2e99d79c1293 (diff) | |
| download | rush-b7506a6fdfbc1ba75d263d9011c0521ba3e4e618.tar.gz | |
~ now works, but not ~/*
| -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 { |
