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  }