buildkit/worker/filter.go

34 lines
595 B
Go

package worker
import (
"strings"
"github.com/containerd/containerd/filters"
)
func adaptWorker(w Worker) filters.Adaptor {
return filters.AdapterFunc(func(fieldpath []string) (string, bool) {
if len(fieldpath) == 0 {
return "", false
}
switch fieldpath[0] {
case "id":
return w.ID(), len(w.ID()) > 0
case "labels":
return checkMap(fieldpath[1:], w.Labels())
}
return "", false
})
}
func checkMap(fieldpath []string, m map[string]string) (string, bool) {
if len(m) == 0 {
return "", false
}
value, ok := m[strings.Join(fieldpath, ".")]
return value, ok
}