if path to ls given that does not exist, report the error.

This commit is contained in:
Andrés N. Robalino 2019-09-03 05:24:04 -05:00
parent 1d0ed7e957
commit 3256b7adb3

View file

@ -82,11 +82,32 @@ impl Shell for ValueShell {
fn ls(&self, args: EvaluatedWholeStreamCommandArgs) -> Result<OutputStream, ShellError> { fn ls(&self, args: EvaluatedWholeStreamCommandArgs) -> Result<OutputStream, ShellError> {
let mut full_path = PathBuf::from(self.path()); let mut full_path = PathBuf::from(self.path());
match &args.nth(0) { let target = args.nth(0);
match target {
Some(value) => full_path.push(Path::new(&value.as_path()?)), Some(value) => full_path.push(Path::new(&value.as_path()?)),
_ => {} _ => {}
} }
let mut value_system = ValueStructure::new();
value_system.walk_decorate(&self.value)?;
if !value_system.exists(&full_path) {
if let Some(target) = target {
return Err(ShellError::labeled_error(
"Can not list entries inside",
"No such path exists",
target.span(),
));
}
return Err(ShellError::labeled_error(
"Can not list entries inside",
"No such path exists",
args.call_info.name_span,
));
}
Ok(self Ok(self
.members_under(full_path.as_path()) .members_under(full_path.as_path())
.map(|x| ReturnSuccess::value(x)) .map(|x| ReturnSuccess::value(x))