forked from extern/nushell
Fix cd-ing into a file (#831)
* Add custom error for path not being a directory * Fix cd issue with cd-ing into a file * Keep formatting style as before * Check if path is not a directory and return error if that's the case
This commit is contained in:
parent
be0d221d56
commit
4e171203cc
@ -61,7 +61,13 @@ impl Command for Cd {
|
||||
Some(v) => {
|
||||
let path = v.as_path()?;
|
||||
let path = match nu_path::canonicalize_with(path, &cwd) {
|
||||
Ok(p) => p,
|
||||
Ok(p) => {
|
||||
if !p.is_dir() {
|
||||
return Err(ShellError::NotADirectory(v.span()?));
|
||||
}
|
||||
p
|
||||
}
|
||||
|
||||
Err(e) => {
|
||||
return Err(ShellError::DirectoryNotFoundHelp(
|
||||
v.span()?,
|
||||
|
@ -185,6 +185,10 @@ pub enum ShellError {
|
||||
#[diagnostic(code(nu::shell::io_error), url(docsrs), help("{0}"))]
|
||||
IOError(String),
|
||||
|
||||
#[error("Cannot change to directory")]
|
||||
#[diagnostic(code(nu::shell::cannot_cd_to_directory), url(docsrs))]
|
||||
NotADirectory(#[label("is not a directory")] Span),
|
||||
|
||||
#[error("Directory not found")]
|
||||
#[diagnostic(code(nu::shell::directory_not_found), url(docsrs))]
|
||||
DirectoryNotFound(#[label("directory not found")] Span),
|
||||
|
Loading…
Reference in New Issue
Block a user