From 6dc332930bf2e6d31c937d87e7ac7ae14c53b7c6 Mon Sep 17 00:00:00 2001 From: sigoden Date: Sun, 14 Apr 2024 14:43:42 +0800 Subject: feat: make built-in roles selectable and rename them (#412) --- src/config/mod.rs | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) (limited to 'src/config/mod.rs') diff --git a/src/config/mod.rs b/src/config/mod.rs index 454dde3..88235ac 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -4,6 +4,7 @@ mod session; pub use self::input::{Input, InputContext}; use self::role::Role; +pub use self::role::{CODE_ROLE, EXPLAIN_ROLE, SHELL_ROLE}; use self::session::{Session, TEMP_SESSION_NAME}; use crate::client::{ @@ -201,6 +202,7 @@ impl Config { role.complete_prompt_args(name); role }) + .or_else(|| Role::find_system_role(name)) .ok_or_else(|| anyhow!("Unknown role `{name}`")) } @@ -296,27 +298,6 @@ impl Config { self.set_role_obj(role) } - pub fn set_execute_role(&mut self) -> Result<()> { - let role = self - .retrieve_role(Role::EXECUTE) - .unwrap_or_else(|_| Role::for_execute()); - self.set_role_obj(role) - } - - pub fn set_describe_command_role(&mut self) -> Result<()> { - let role = self - .retrieve_role(Role::DESCRIBE_COMMAND) - .unwrap_or_else(|_| Role::for_describe_command()); - self.set_role_obj(role) - } - - pub fn set_code_role(&mut self) -> Result<()> { - let role = self - .retrieve_role(Role::CODE) - .unwrap_or_else(|_| Role::for_code()); - self.set_role_obj(role) - } - pub fn set_role_obj(&mut self, role: Role) -> Result<()> { if let Some(session) = self.session.as_mut() { session.guard_empty()?; @@ -502,12 +483,7 @@ impl Config { pub fn repl_complete(&self, cmd: &str, args: &[&str]) -> Vec { let (values, filter) = if args.len() == 1 { let values = match cmd { - ".role" => self - .roles - .iter() - .filter(|v| !v.is_system()) - .map(|v| v.name.clone()) - .collect(), + ".role" => self.roles.iter().map(|v| v.name.clone()).collect(), ".model" => list_models(self).into_iter().map(|v| v.id()).collect(), ".session" => self.list_sessions(), ".set" => vec![ -- cgit v1.2.3