From b529c13b84b60dc3e45c259961d1bbceb1a39d4f Mon Sep 17 00:00:00 2001 From: pawank06 Date: Wed, 7 Jan 2026 15:11:21 +0530 Subject: [PATCH 1/2] feat(cd): implement cd navigation for absolute path --- src/main.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main.rs b/src/main.rs index 40dbb1a..dbe3d6f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -76,6 +76,31 @@ fn main() { Ok(val) => println!("{}", val.display()), Err(e) => eprintln!("pwd: {}", e), }, + "cd" => { + // check if the path is absolute or not + + if parts.len() < 2 { + continue; + } + + let query = parts[1]; + + if query.starts_with("/") { + let mut args = &parts[1..]; + let full_path = args.join(" "); + + let path = Path::new(&full_path); + println!("path is {}", path.display()); + if path.exists() && path.is_dir() { + if let Err(_) = env::set_current_dir(path) { + println!("{} path don't exits", path.display()); + } + } + } else { + println!("path dont exits"); + } + // else print that path don't exists + } _ => { if command.contains("/") { match Command::new(command).args(&parts[1..]).status() { From 363596eb27edb53a4071fe53c35d8559cbb6dc49 Mon Sep 17 00:00:00 2001 From: pawank06 Date: Wed, 7 Jan 2026 15:17:17 +0530 Subject: [PATCH 2/2] fix(cd): improve messages of cd path not found --- src/main.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index dbe3d6f..254a2b9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -77,8 +77,6 @@ fn main() { Err(e) => eprintln!("pwd: {}", e), }, "cd" => { - // check if the path is absolute or not - if parts.len() < 2 { continue; } @@ -86,20 +84,20 @@ fn main() { let query = parts[1]; if query.starts_with("/") { - let mut args = &parts[1..]; + let args = &parts[1..]; let full_path = args.join(" "); let path = Path::new(&full_path); - println!("path is {}", path.display()); if path.exists() && path.is_dir() { if let Err(_) = env::set_current_dir(path) { - println!("{} path don't exits", path.display()); + println!("cd: {}: No such file or directory", path.display()); } } } else { - println!("path dont exits"); + let args = &parts[1..]; + let full_path = args.join(" "); + println!("cd: {}: No such file or directory", full_path); } - // else print that path don't exists } _ => { if command.contains("/") {