mirror of
https://github.com/nushell/nushell.git
synced 2025-04-02 20:27:11 +02:00
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) => {
|
Some(v) => {
|
||||||
let path = v.as_path()?;
|
let path = v.as_path()?;
|
||||||
let path = match nu_path::canonicalize_with(path, &cwd) {
|
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) => {
|
Err(e) => {
|
||||||
return Err(ShellError::DirectoryNotFoundHelp(
|
return Err(ShellError::DirectoryNotFoundHelp(
|
||||||
v.span()?,
|
v.span()?,
|
||||||
|
@ -185,6 +185,10 @@ pub enum ShellError {
|
|||||||
#[diagnostic(code(nu::shell::io_error), url(docsrs), help("{0}"))]
|
#[diagnostic(code(nu::shell::io_error), url(docsrs), help("{0}"))]
|
||||||
IOError(String),
|
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")]
|
#[error("Directory not found")]
|
||||||
#[diagnostic(code(nu::shell::directory_not_found), url(docsrs))]
|
#[diagnostic(code(nu::shell::directory_not_found), url(docsrs))]
|
||||||
DirectoryNotFound(#[label("directory not found")] Span),
|
DirectoryNotFound(#[label("directory not found")] Span),
|
||||||
|
Loading…
Reference in New Issue
Block a user