From 692376e830475f5feff172a6604b4a7b6c2b26c0 Mon Sep 17 00:00:00 2001 From: nibon7 Date: Fri, 5 Aug 2022 20:58:40 +0800 Subject: [PATCH] export `get_shells` and `get_current_shell` (#6236) Signed-off-by: nibon7 --- crates/nu-command/src/filesystem/cd.rs | 19 +++---------------- crates/nu-command/src/shells/mod.rs | 4 ++-- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/crates/nu-command/src/filesystem/cd.rs b/crates/nu-command/src/filesystem/cd.rs index 35a89ccfe6..19598c927e 100644 --- a/crates/nu-command/src/filesystem/cd.rs +++ b/crates/nu-command/src/filesystem/cd.rs @@ -1,4 +1,5 @@ use crate::filesystem::cd_query::query; +use crate::{get_current_shell, get_shells}; use nu_engine::{current_dir, CallExt}; use nu_protocol::ast::Call; use nu_protocol::engine::{Command, EngineState, Stack}; @@ -146,22 +147,8 @@ impl Command for Cd { span: call.head, }; - let shells = stack.get_env_var(engine_state, "NUSHELL_SHELLS"); - let mut shells = if let Some(v) = shells { - v.as_list() - .map(|x| x.to_vec()) - .unwrap_or_else(|_| vec![cwd]) - } else { - vec![cwd] - }; - - let current_shell = stack.get_env_var(engine_state, "NUSHELL_CURRENT_SHELL"); - let current_shell = if let Some(v) = current_shell { - v.as_integer().unwrap_or_default() as usize - } else { - 0 - }; - + let mut shells = get_shells(engine_state, stack, cwd); + let current_shell = get_current_shell(engine_state, stack); shells[current_shell] = path_value.clone(); stack.add_env_var( diff --git a/crates/nu-command/src/shells/mod.rs b/crates/nu-command/src/shells/mod.rs index 25076ef174..ca4ff853cc 100644 --- a/crates/nu-command/src/shells/mod.rs +++ b/crates/nu-command/src/shells/mod.rs @@ -14,7 +14,7 @@ use nu_protocol::Value; pub use p::PrevShell; pub use shells_::Shells; -fn get_shells(engine_state: &EngineState, stack: &mut Stack, cwd: Value) -> Vec { +pub fn get_shells(engine_state: &EngineState, stack: &mut Stack, cwd: Value) -> Vec { let shells = stack.get_env_var(engine_state, "NUSHELL_SHELLS"); let shells = if let Some(v) = shells { v.as_list() @@ -26,7 +26,7 @@ fn get_shells(engine_state: &EngineState, stack: &mut Stack, cwd: Value) -> Vec< shells } -fn get_current_shell(engine_state: &EngineState, stack: &mut Stack) -> usize { +pub fn get_current_shell(engine_state: &EngineState, stack: &mut Stack) -> usize { let current_shell = stack.get_env_var(engine_state, "NUSHELL_CURRENT_SHELL"); if let Some(v) = current_shell { v.as_integer().unwrap_or_default() as usize