package opts import ( "fmt" "github.com/docker/go-units" ) // UlimitOpt defines a map of Ulimits type UlimitOpt struct { values *map[string]*units.Ulimit } // NewUlimitOpt creates a new UlimitOpt func NewUlimitOpt(ref *map[string]*units.Ulimit) *UlimitOpt { if ref == nil { ref = &map[string]*units.Ulimit{} } return &UlimitOpt{ref} } // Set validates a Ulimit and sets its name as a key in UlimitOpt func (o *UlimitOpt) Set(val string) error { l, err := units.ParseUlimit(val) if err != nil { return err } (*o.values)[l.Name] = l return nil } // String returns Ulimit values as a string. func (o *UlimitOpt) String() string { var out []string for _, v := range *o.values { out = append(out, v.String()) } return fmt.Sprintf("%v", out) } // GetList returns a slice of pointers to Ulimits. func (o *UlimitOpt) GetList() []*units.Ulimit { var ulimits []*units.Ulimit for _, v := range *o.values { ulimits = append(ulimits, v) } return ulimits } // Type returns the option type func (o *UlimitOpt) Type() string { return "ulimit" }