mirror of
https://github.com/TECHNOFAB11/pay-respects.git
synced 2025-12-12 14:30:10 +01:00
feat: regex for commands
This commit is contained in:
parent
b0db0447b9
commit
2f3ba438ea
3 changed files with 46 additions and 17 deletions
|
|
@ -193,6 +193,7 @@ fn eval_suggest(suggest: &str) -> TokenStream2 {
|
|||
let mut cmd_list = Vec::new();
|
||||
|
||||
replaces::opts(&mut suggest, &mut replace_list, &mut opt_list);
|
||||
replaces::cmd_reg(&mut suggest, &mut replace_list);
|
||||
replaces::err(&mut suggest, &mut replace_list);
|
||||
replaces::command(&mut suggest, &mut replace_list);
|
||||
replaces::shell(&mut suggest, &mut cmd_list);
|
||||
|
|
|
|||
|
|
@ -48,6 +48,41 @@ pub fn opts(suggest: &mut String, replace_list: &mut Vec<TokenStream2>, opt_list
|
|||
}
|
||||
}
|
||||
|
||||
pub fn cmd_reg(suggest: &mut String, replace_list: &mut Vec<TokenStream2>) {
|
||||
let mut replace_tag = 0;
|
||||
let tag_name = "cmd";
|
||||
|
||||
while suggest.contains("{{cmd::") {
|
||||
let (placeholder, args) = eval_placeholder(suggest, "{{cmd::", "}}");
|
||||
|
||||
let regex = suggest[args.to_owned()].trim();
|
||||
|
||||
let command = format!("cmd_regex(r###\"{}\"###, &last_command)", regex);
|
||||
|
||||
replace_list.push(rtag(tag_name, replace_tag, command));
|
||||
suggest.replace_range(placeholder, &tag(tag_name, replace_tag));
|
||||
replace_tag += 1;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn err(suggest: &mut String, replace_list: &mut Vec<TokenStream2>) {
|
||||
let mut replace_tag = 0;
|
||||
let tag_name = "err";
|
||||
|
||||
while suggest.contains("{{err::") {
|
||||
let (placeholder, args) = eval_placeholder(suggest, "{{err::", "}}");
|
||||
|
||||
let regex = suggest[args.to_owned()].trim();
|
||||
|
||||
let command = format!("err_regex(r###\"{}\"###, error_msg)", regex);
|
||||
|
||||
replace_list.push(rtag(tag_name, replace_tag, command));
|
||||
suggest.replace_range(placeholder, &tag(tag_name, replace_tag));
|
||||
replace_tag += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub fn command(suggest: &mut String, replace_list: &mut Vec<TokenStream2>) {
|
||||
let mut replace_tag = 0;
|
||||
let tag_name = "command";
|
||||
|
|
@ -151,23 +186,6 @@ pub fn typo(suggest: &mut String, replace_list: &mut Vec<TokenStream2>) {
|
|||
|
||||
}
|
||||
|
||||
pub fn err(suggest: &mut String, replace_list: &mut Vec<TokenStream2>) {
|
||||
let mut replace_tag = 0;
|
||||
let tag_name = "err";
|
||||
|
||||
while suggest.contains("{{err::") {
|
||||
let (placeholder, args) = eval_placeholder(suggest, "{{err::", "}}");
|
||||
|
||||
let regex = suggest[args.to_owned()].trim();
|
||||
|
||||
let command = format!("err_regex(r###\"{}\"###, error_msg)", regex);
|
||||
|
||||
replace_list.push(rtag(tag_name, replace_tag, command));
|
||||
suggest.replace_range(placeholder, &tag(tag_name, replace_tag));
|
||||
replace_tag += 1;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn shell(suggest: &mut String, cmd_list: &mut Vec<String>) {
|
||||
while suggest.contains("{{shell") {
|
||||
let (placeholder, args) = eval_placeholder(suggest, "{{shell", "}}");
|
||||
|
|
|
|||
|
|
@ -67,6 +67,16 @@ fn err_regex(regex: &str, error_msg: &str) -> String {
|
|||
err.join(" ")
|
||||
}
|
||||
|
||||
fn cmd_regex(regex: &str, command: &str) -> String {
|
||||
let regex = Regex::new(regex).unwrap();
|
||||
let err = regex
|
||||
.find_iter(command)
|
||||
.map(|cap| cap.as_str().to_owned())
|
||||
.collect::<Vec<String>>();
|
||||
|
||||
err.join(" ")
|
||||
}
|
||||
|
||||
fn eval_shell_command(shell: &str, command: &str) -> Vec<String> {
|
||||
let output = std::process::Command::new(shell)
|
||||
.arg("-c")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue