summaryrefslogtreecommitdiffstats
path: root/src/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/config')
-rw-r--r--src/config/mod.rs10
-rw-r--r--src/config/role.rs69
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