From a875058500cc93f4d18bd5481d94987232bfbc2a Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 25 Dec 2021 15:39:08 -0500 Subject: rearrange some things --- src/builtins.rs | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 src/builtins.rs (limited to 'src/builtins.rs') diff --git a/src/builtins.rs b/src/builtins.rs deleted file mode 100644 index e8f87da..0000000 --- a/src/builtins.rs +++ /dev/null @@ -1,47 +0,0 @@ -pub fn is(exe: &str) -> bool { - matches!(exe, "cd") -} - -pub fn run<'a>(exe: &str, args: impl IntoIterator) -> u8 { - match exe { - "cd" => impls::cd( - args.into_iter() - .map(std::convert::AsRef::as_ref) - .next() - .unwrap_or(""), - ), - _ => unreachable!(), - } -} - -mod impls { - pub fn cd(dir: &str) -> u8 { - let dir = if dir.is_empty() { - home() - } else if dir.starts_with('~') { - let path: std::path::PathBuf = dir.into(); - if let std::path::Component::Normal(prefix) = - path.components().next().unwrap() - { - if prefix.to_str() == Some("~") { - home().join(path.strip_prefix(prefix).unwrap()) - } else { - // TODO - return 1; - } - } else { - unreachable!() - } - } else { - dir.into() - }; - match std::env::set_current_dir(dir) { - Ok(()) => 0, - Err(_) => 1, - } - } - - fn home() -> std::path::PathBuf { - std::env::var_os("HOME").unwrap().into() - } -} -- cgit v1.2.3-54-g00ecf