summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2023-03-13 10:13:50 +0800
committersigoden <sigoden@gmail.com>2023-03-13 10:13:50 +0800
commitad04f6036516a9232e8a9205773afecaac7d7079 (patch)
treeb5cbb1f3b36d8f84545441dc5a083f5505c074cc /src
parent9c04455e363d076cd7582fe9d476aa0fd6d86ea8 (diff)
downloadaichat-ad04f6036516a9232e8a9205773afecaac7d7079.tar.gz
chore: optimzie role args
Diffstat (limited to 'src')
-rw-r--r--src/config/mod.rs13
-rw-r--r--src/main.rs2
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,