Fix path-related parts of value shell

This commit is contained in:
Jonathan Turner 2019-08-27 17:15:05 +12:00
parent 1d64d90419
commit 570a0ac275

View File

@ -84,19 +84,20 @@ impl Shell for ValueShell {
let path = match args.nth(0) { let path = match args.nth(0) {
None => "/".to_string(), None => "/".to_string(),
Some(v) => { Some(v) => {
let target = v.as_string()?; let target = v.as_path()?;
let mut cwd = PathBuf::from(&self.path); let mut cwd = PathBuf::from(&self.path);
match target {
x if x == ".." => { if target == PathBuf::from("..") {
cwd.pop(); cwd.pop();
} } else {
_ => match target.chars().nth(0) { match target.to_str() {
Some(target) => match target.chars().nth(0) {
Some(x) if x == '/' => cwd = PathBuf::from(target), Some(x) if x == '/' => cwd = PathBuf::from(target),
_ => { _ => cwd.push(target),
cwd.push(target);
}
}, },
None => cwd.push(target),
}
} }
cwd.to_string_lossy().to_string() cwd.to_string_lossy().to_string()
} }