1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use serde::{Deserialize, Serialize};
use regex::Regex;
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct Rule {
pub contain: String,
pub description: Option<String>,
pub regex: Option<bool>,
}
pub fn get_violated_rule<'a>(rules: &'a Vec<Rule>, command: &String) -> Option<&'a Rule> {
rules.iter().find(|rule| {
if rule.regex == Some(true) {
match Regex::new(&rule.contain) {
Ok(re) => re.is_match(&command),
Err(_) => false,
}
} else {
command.contains(&rule.contain)
}
})
}