summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEl-BG-1970 <elouan.gros.fr@gmail.com>2022-04-27 14:51:07 +0200
committerEl-BG-1970 <elouan.gros.fr@gmail.com>2022-04-27 14:51:07 +0200
commit90cf1fff49dbbf12bf4151878674ad3ff567dcaf (patch)
treec137c94706f26c6274fe1093c7d8fd5955b8d579
parent44929028777f7b15f6fd5627144735a23d360f81 (diff)
downloadrush-90cf1fff49dbbf12bf4151878674ad3ff567dcaf.tar.gz
cleaner cd code
-rw-r--r--src/main.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/main.rs b/src/main.rs
index df292b5..b1fb7b7 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -36,17 +36,13 @@ fn main() -> io::Result<()> {
"exit" => return Ok(()),
"cd" => {
// change directory
- match parts.next() {
- None => {
- let home = env::var("HOME").unwrap();
- let cd = Path::new(home.as_str());
- env::set_current_dir(&cd)?;
- },
- Some(p) => {
- let cd = Path::new(&p);
- env::set_current_dir(&cd)?;
- }
- };
+ let new_dir = parts.peekable().peek()
+ .map_or(env::var("HOME").unwrap(),
+ |x| (*x).clone());
+ let new_wd = Path::new(&new_dir);
+ if let Err(e) = env::set_current_dir(&new_wd) {
+ eprintln!("{}", e);
+ }
},
command => {
let child = Command::new(command)