yao/neo/command/driver/query.go
2023-05-02 19:36:02 +08:00

48 lines
969 B
Go

package driver
import (
"regexp"
"strings"
)
// MatchStack match the stack
func (query Query) MatchStack(stack string) bool {
if query.Stack == "" || query.Stack == "*" || stack == "" {
return true
}
if query.Stack == stack {
return true
}
matched, _ := regexp.MatchString(strings.ReplaceAll(query.Stack, "*", ".*"), stack)
return matched
}
// MatchPath match the path
func (query Query) MatchPath(path string) bool {
if query.Path == "" || query.Path == "*" || path == "" {
return true
}
if query.Path == path {
return true
}
matched, _ := regexp.MatchString(strings.ReplaceAll(query.Path, "*", ".*"), path)
return matched
}
// MatchAny match the stack or path
func (query Query) MatchAny(stack, path string) bool {
if query.Path == "" || query.Path == "-" {
return query.MatchStack(stack)
}
if query.Stack == "" || query.Stack == "-" {
return query.MatchPath(path)
}
return query.MatchStack(stack) || query.MatchPath(path)
}