github.com/WindomZ/go-commander@v1.2.2/options.go (about) 1 package commander 2 3 import "strings" 4 5 // _Options 6 type _Options []*_Option 7 8 func (o _Options) IsEmpty() bool { 9 return len(o) == 0 10 } 11 12 func (o _Options) UsagesString(ones ...bool) (r []string) { 13 if len(o) == 0 { 14 return 15 } 16 var one bool 17 if len(o) == 1 && len(ones) != 0 { 18 one = ones[0] 19 } 20 rs := make([]string, 0, len(o)) 21 for _, opt := range o { 22 if opt.line { 23 r = append(r, opt.UsageString(one)) 24 } else { 25 rs = append(rs, opt.UsageString(one)) 26 } 27 } 28 if len(rs) != 0 { 29 r = append(r, strings.Join(rs, " ")) 30 } 31 return 32 } 33 34 func (o _Options) OptionsString() (r map[string]string) { 35 r = make(map[string]string, len(o)) 36 for _, opt := range o { 37 if s := opt.OptionString(); len(s) != 0 { 38 r[opt.Name()] = s 39 } 40 } 41 return 42 } 43 44 func (o _Options) run(c Context) (result _Result) { 45 for _, opt := range o { 46 if r := opt.run(c); r != nil && r.Break() { 47 if result = r; r.Error() != nil { 48 break 49 } 50 } 51 } 52 return 53 }