48 lines
969 B
Go
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)
|
|
}
|