support filter by many same options

This commit is contained in:
Arnas Udovicius 2022-08-30 19:39:40 +03:00
parent 7ed3c128f4
commit 6bc45afab5

View file

@ -60,14 +60,15 @@ func (t Tree) Slice(path string) (Tree, error) {
return Tree{}, errors.New("tree was not found") return Tree{}, errors.New("tree was not found")
} }
func (t Tree) Filter(filter map[string]string) (Tree, bool) { func (t Tree) Filter(filter map[string][]string) (Tree, bool) {
filtered := Tree{} filtered := Tree{}
filtered.Path = t.Path filtered.Path = t.Path
found := false found := false
for _, f := range t.Files { for _, f := range t.Files {
addFile := false addFile := false
for option, value := range filter { for option, values := range filter {
for _, value := range values {
if option == "tag" { if option == "tag" {
for _, tag := range f.Tags { for _, tag := range f.Tags {
if tag == value { if tag == value {
@ -80,6 +81,7 @@ func (t Tree) Filter(filter map[string]string) (Tree, bool) {
addFile = true addFile = true
} }
} }
}
if addFile { if addFile {
found = true found = true
filtered.Files = append(filtered.Files, f) filtered.Files = append(filtered.Files, f)