Parse a tool permission from Claude Code format Examples: - "Bash(gh issue view:*)" -> ToolPermission { tool: "Bash", pattern: "gh issue view:*" } - "read(*)" -> ToolPermission { tool: "read", pattern: "*" }
(s: &str)
| 70 | /// - "Bash(gh issue view:*)" -> ToolPermission { tool: "Bash", pattern: "gh issue view:*" } |
| 71 | /// - "read(*)" -> ToolPermission { tool: "read", pattern: "*" } |
| 72 | pub fn parse(s: &str) -> Option<Self> { |
| 73 | let s = s.trim(); |
| 74 | |
| 75 | // Find opening parenthesis |
| 76 | let open = s.find('(')?; |
| 77 | let close = s.rfind(')')?; |
| 78 | |
| 79 | if close <= open { |
| 80 | return None; |
| 81 | } |
| 82 | |
| 83 | let tool = s[..open].trim().to_string(); |
| 84 | let pattern = s[open + 1..close].trim().to_string(); |
| 85 | |
| 86 | Some(ToolPermission { tool, pattern }) |
| 87 | } |
| 88 | } |
| 89 | |
| 90 | /// Skill definition (Claude Code compatible) |