diff --git a/src/builtins/cd.rs b/src/builtins/cd.rs new file mode 100644 index 0000000..263b823 --- /dev/null +++ b/src/builtins/cd.rs @@ -0,0 +1,8 @@ +use std::env::set_current_dir; + +use crate::error::ShellError; + +pub fn run(keyword: &str, args: &[&str]) -> Result<(), ShellError> { + set_current_dir(args[0]); + Ok(()) +} diff --git a/src/builtins/mod.rs b/src/builtins/mod.rs index cd4a7d1..39735bd 100644 --- a/src/builtins/mod.rs +++ b/src/builtins/mod.rs @@ -1,11 +1,16 @@ use crate::error::ShellError; +mod cd; -const BUILTINS: &[&str] = &[]; +const BUILTINS: &[&str] = &["cd"]; pub fn is_builtin(keyword: &str) -> bool { BUILTINS.contains(&keyword) } pub fn execute_builtin(keyword: &str, args: &[&str]) -> Result<(), ShellError> { + match keyword { + "cd" => cd::run(keyword, args)?, + _ => {} + } Ok(()) }