From ad04f6036516a9232e8a9205773afecaac7d7079 Mon Sep 17 00:00:00 2001 From: sigoden Date: Mon, 13 Mar 2023 10:13:50 +0800 Subject: chore: optimzie role args --- src/config/mod.rs | 13 ++++++++----- src/main.rs | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/config/mod.rs b/src/config/mod.rs index 569e434..b7833e4 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -119,8 +119,12 @@ impl Config { Ok(()) } - pub fn find_role(&self, name: &str) -> Option { - self.roles.iter().find(|v| v.match_name(name)).cloned() + pub fn get_role(&self, name: &str) -> Option { + self.roles.iter().find(|v| v.match_name(name)).map(|v| { + let mut role = v.clone(); + role.complete_prompt_args(name); + role + }) } pub fn config_dir() -> Result { @@ -199,9 +203,8 @@ impl Config { } pub fn change_role(&mut self, name: &str) -> Result { - match self.find_role(name) { - Some(mut role) => { - role.complete_prompt_args(name); + match self.get_role(name) { + Some(role) => { if let Some(conversation) = self.conversation.as_mut() { conversation.update_role(&role)?; } diff --git a/src/main.rs b/src/main.rs index ffbe5d9..ecbfc60 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,7 +39,7 @@ fn main() -> Result<()> { Some(name) => Some( config .read() - .find_role(name) + .get_role(name) .ok_or_else(|| anyhow!("Unknown role '{name}'"))?, ), None => None, -- cgit v1.2.3