mirror of
https://github.com/photoprism/photoprism.git
synced 2026-01-23 02:24:24 +00:00
53 lines
941 B
Go
53 lines
941 B
Go
package duf
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/IGLOU-EU/go-wildcard"
|
|
)
|
|
|
|
// parseCommaSeparatedValues parses comma separated string into a map.
|
|
func parseCommaSeparatedValues(values string) map[string]struct{} {
|
|
m := make(map[string]struct{})
|
|
for _, v := range strings.Split(values, ",") {
|
|
v = strings.TrimSpace(v)
|
|
if len(v) == 0 {
|
|
continue
|
|
}
|
|
|
|
v = strings.ToLower(v)
|
|
m[v] = struct{}{}
|
|
}
|
|
return m
|
|
}
|
|
|
|
// validateGroups validates the parsed group maps.
|
|
func validateGroups(m map[string]struct{}) error {
|
|
for k := range m {
|
|
found := false
|
|
for _, g := range groups {
|
|
if g == k {
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
|
|
if !found {
|
|
return fmt.Errorf("unknown device group: %s", k)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// findInKey parse a slice of pattern to match the given key.
|
|
func findInKey(str string, km map[string]struct{}) bool {
|
|
for p := range km {
|
|
if wildcard.Match(p, str) {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|