diff options
| -rw-r--r-- | src/config/mod.rs | 10 | ||||
| -rw-r--r-- | src/config/role.rs | 69 |
2 files changed, 5 insertions, 74 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 19bd239..d6e710a 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -885,8 +885,8 @@ impl Config { pub fn retrieve_role(&self, name: &str) -> Result<Role> { let names = Self::list_roles(false); - let mut role = if let Some(role_name) = Role::match_name(&names, name) { - let path = Self::role_file(&role_name); + let mut role = if names.contains(&name.to_string()) { + let path = Self::role_file(name); let content = read_to_string(&path)?; Role::new(name, &content) } else { @@ -942,9 +942,7 @@ impl Config { } pub fn upsert_role(&mut self, name: &str) -> Result<()> { - let names = Self::list_roles(false); - let role_name = Role::match_name(&names, name).unwrap_or_else(|| name.to_string()); - let role_path = Self::role_file(&role_name); + let role_path = Self::role_file(name); ensure_parent_exists(&role_path)?; let editor = self.editor()?; edit_file(&editor, &role_path)?; @@ -1026,7 +1024,7 @@ impl Config { pub fn has_role(name: &str) -> bool { let names = Self::list_roles(true); - Role::match_name(&names, name).is_some() + names.contains(&name.to_string()) } pub fn use_session(&mut self, session_name: Option<&str>) -> Result<()> { diff --git a/src/config/role.rs b/src/config/role.rs index 6612e10..cf5be62 100644 --- a/src/config/role.rs +++ b/src/config/role.rs @@ -67,7 +67,7 @@ impl Role { prompt = prompt_value.as_str().trim(); } } - let mut prompt = complete_prompt_args(prompt, name); + let mut prompt = prompt.to_string(); interpolate_variables(&mut prompt); let mut role = Self { name: name.to_string(), @@ -111,23 +111,6 @@ impl Role { .collect() } - pub fn match_name(names: &[String], name: &str) -> Option<String> { - if names.contains(&name.to_string()) { - Some(name.to_string()) - } else { - let parts: Vec<&str> = name.split('#').collect(); - let parts_len = parts.len(); - if parts_len < 2 { - return None; - } - let prefix = format!("{}#", parts[0]); - names - .iter() - .find(|v| v.starts_with(&prefix) && v.split('#').count() == parts_len) - .cloned() - } - } - pub fn has_args(&self) -> bool { self.name.contains('#') } @@ -322,14 +305,6 @@ impl RoleLike for Role { } } -fn complete_prompt_args(prompt: &str, name: &str) -> String { - let mut prompt = prompt.to_string(); - for (i, arg) in name.split('#').skip(1).enumerate() { - prompt = prompt.replace(&format!("__ARG{}__", i + 1), arg); - } - prompt -} - fn parse_structure_prompt(prompt: &str) -> (&str, Vec<(&str, &str)>) { let mut text = prompt; let mut search_input = true; @@ -383,48 +358,6 @@ mod tests { use super::*; #[test] - fn test_merge_prompt_name() { - assert_eq!( - complete_prompt_args("convert __ARG1__", "convert#foo"), - "convert foo" - ); - assert_eq!( - complete_prompt_args("convert __ARG1__ to __ARG2__", "convert#foo#bar"), - "convert foo to bar" - ); - } - - #[test] - fn test_match_name() { - let names = vec![ - "convert#yaml#json".into(), - "convert#yaml".into(), - "convert".into(), - ]; - assert_eq!( - Role::match_name(&names, "convert"), - Some("convert".to_string()) - ); - assert_eq!( - Role::match_name(&names, "convert#yaml"), - Some("convert#yaml".to_string()) - ); - assert_eq!( - Role::match_name(&names, "convert#json"), - Some("convert#yaml".to_string()) - ); - assert_eq!( - Role::match_name(&names, "convert#yaml#json"), - Some("convert#yaml#json".to_string()) - ); - assert_eq!( - Role::match_name(&names, "convert#json#yaml"), - Some("convert#yaml#json".to_string()) - ); - assert_eq!(Role::match_name(&names, "convert#yaml#json#simple"), None,); - } - - #[test] fn test_parse_structure_prompt1() { let prompt = r#" System message |
