From 3256b7adb3c2786afdaa19f313330f2602b8233c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20N=2E=20Robalino?= Date: Tue, 3 Sep 2019 05:24:04 -0500 Subject: [PATCH] if path to ls given that does not exist, report the error. --- src/shell/value_shell.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/shell/value_shell.rs b/src/shell/value_shell.rs index 8d6c7b6fd..26dab3583 100644 --- a/src/shell/value_shell.rs +++ b/src/shell/value_shell.rs @@ -82,11 +82,32 @@ impl Shell for ValueShell { fn ls(&self, args: EvaluatedWholeStreamCommandArgs) -> Result { 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()?)), _ => {} } + 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 .members_under(full_path.as_path()) .map(|x| ReturnSuccess::value(x))