(permission: &str, pattern: &str, rulesets: &[PermissionRuleset])
| 82 | } |
| 83 | |
| 84 | pub fn evaluate(permission: &str, pattern: &str, rulesets: &[PermissionRuleset]) -> PermissionRule { |
| 85 | let merged = merge(rulesets); |
| 86 | |
| 87 | let matched = merged.iter().rev().find(|rule| { |
| 88 | wildcard_match(permission, &rule.permission) && wildcard_match(pattern, &rule.pattern) |
| 89 | }); |
| 90 | |
| 91 | matched.cloned().unwrap_or(PermissionRule { |
| 92 | action: PermissionAction::Ask, |
| 93 | permission: permission.to_string(), |
| 94 | pattern: "*".to_string(), |
| 95 | }) |
| 96 | } |
| 97 | |
| 98 | const EDIT_TOOLS: &[&str] = &["edit", "write", "patch", "multiedit"]; |
| 99 |
no test coverage detected