1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package filters
- import (
- "errors"
- "strings"
- )
- /*
- Parse the argument to the filter flag. Like
- `docker ps -f 'created=today;image.name=ubuntu*'`
- Filters delimited by ';', and expected to be 'name=value'
- If prev map is provided, then it is appended to, and returned. By default a new
- map is created.
- */
- func ParseFlag(arg string, prev map[string]string) (map[string]string, error) {
- var filters map[string]string
- if prev != nil {
- filters = prev
- } else {
- filters = map[string]string{}
- }
- if len(arg) == 0 {
- return filters, nil
- }
- for _, chunk := range strings.Split(arg, ";") {
- if !strings.Contains(chunk, "=") {
- return filters, ErrorBadFormat
- }
- f := strings.SplitN(chunk, "=", 2)
- filters[f[0]] = f[1]
- }
- return filters, nil
- }
- var ErrorBadFormat = errors.New("bad format of filter (expected name=value)")
- func ToParam(f map[string]string) string {
- fs := []string{}
- for k, v := range f {
- fs = append(fs, k+"="+v)
- }
- return strings.Join(fs, ";")
- }
|