diff options
| author | sigoden <sigoden@gmail.com> | 2023-03-13 10:13:50 +0800 |
|---|---|---|
| committer | sigoden <sigoden@gmail.com> | 2023-03-13 10:13:50 +0800 |
| commit | ad04f6036516a9232e8a9205773afecaac7d7079 (patch) | |
| tree | b5cbb1f3b36d8f84545441dc5a083f5505c074cc | |
| parent | 9c04455e363d076cd7582fe9d476aa0fd6d86ea8 (diff) | |
| download | aichat-ad04f6036516a9232e8a9205773afecaac7d7079.tar.gz | |
chore: optimzie role args
| -rw-r--r-- | src/config/mod.rs | 13 | ||||
| -rw-r--r-- | 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<Role> { - self.roles.iter().find(|v| v.match_name(name)).cloned() + pub fn get_role(&self, name: &str) -> Option<Role> { + 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<PathBuf> { @@ -199,9 +203,8 @@ impl Config { } pub fn change_role(&mut self, name: &str) -> Result<String> { - 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, |
