pub fn match_patterns(dsl: &str, owner: &str, project: &str) -> Option<String> {
let first_cmd = dsl.split("&&").next().unwrap_or(dsl).trim();
let lower = first_cmd.to_lowercase();
let tokens: Vec<&str> = first_cmd.split_whitespace().collect();
if lower.starts_with("register ") {
let name = tokens.get(1).copied().unwrap_or("");
if !name.is_empty() {
return Some(format!(
"/projects/{owner}/{project}/pipelines/editor?name={name}"
));
}
}
if lower.starts_with("activate pipeline ") {
let name = tokens.get(2).copied().unwrap_or("");
if !name.is_empty() {
return Some(format!(
"/projects/{owner}/{project}/pipelines/editor?name={name}&tab=status"
));
}
}
if lower.starts_with("describe pipeline ") {
let name = tokens.get(2).copied().unwrap_or("");
if !name.is_empty() {
return Some(format!(
"/projects/{owner}/{project}/pipelines/editor?name={name}"
));
}
}
if lower.starts_with("patch pipeline ") {
let name = tokens.get(2).copied().unwrap_or("");
if !name.is_empty() {
return Some(format!(
"/projects/{owner}/{project}/pipelines/editor?name={name}"
));
}
}
if lower.starts_with("get templates") {
return Some(format!("/projects/{owner}/{project}/build/templates"));
}
if lower.starts_with("get pipelines") {
return Some(format!("/projects/{owner}/{project}/pipelines/registry"));
}
if lower.starts_with("describe connection ") {
let slug = tokens.get(2).copied().unwrap_or("");
if !slug.is_empty() {
return Some(format!("/projects/{owner}/{project}/db?slug={slug}"));
}
}
if lower.contains("pg.query") {
return Some(format!("/projects/{owner}/{project}/db"));
}
if lower.starts_with("get connections") {
return Some(format!("/projects/{owner}/{project}/db/connections"));
}
if lower.starts_with("get credentials") {
return Some(format!("/projects/{owner}/{project}/credentials"));
}
if lower.starts_with("get docs") {
return Some(format!("/projects/{owner}/{project}/build/docs"));
}
if lower.starts_with("get nodes") {
return Some(format!("/projects/{owner}/{project}/build/nodes"));
}
if lower.starts_with("get tables") {
return Some(format!("/projects/{owner}/{project}/db"));
}
if lower.starts_with("describe node ") {
return Some(format!("/projects/{owner}/{project}/build/nodes"));
}
if lower.starts_with("execute pipeline ") {
let name = tokens.get(2).copied().unwrap_or("");
if !name.is_empty() {
return Some(format!(
"/projects/{owner}/{project}/pipelines/editor?name={name}&tab=logs"
));
}
}
if lower.starts_with("deactivate pipeline ") {
let name = tokens.get(2).copied().unwrap_or("");
if !name.is_empty() {
return Some(format!(
"/projects/{owner}/{project}/pipelines/editor?name={name}&tab=status"
));
}
}
if lower.starts_with("git ") {
return Some(format!("/projects/{owner}/{project}/files"));
}
None
}