...

Source file src/golang.conradwood.net/go-easyops/utils/flag_intarray.go

Documentation: golang.conradwood.net/go-easyops/utils

     1  package utils
     2  
     3  import (
     4  	"flag"
     5  	"strconv"
     6  	"strings"
     7  )
     8  
     9  // a flag to allow for a list of uint64 and a convenient method to check if an integer is part of the flag
    10  func IntArrayFlag(name string, help string) *intarrayFlag {
    11  	res := &intarrayFlag{name: name, help: help}
    12  	flag.Var(res, name, help)
    13  	return res
    14  
    15  }
    16  
    17  type intarrayFlag struct {
    18  	name string
    19  	help string
    20  	ints []uint64
    21  }
    22  
    23  func (t *intarrayFlag) Set(s string) error {
    24  	var i []uint64
    25  	for _, sx := range strings.Split(s, ",") {
    26  		sx = strings.Trim(sx, " ")
    27  		n, err := strconv.ParseUint(sx, 10, 64)
    28  		if err != nil {
    29  			return err
    30  		}
    31  		i = append(i, n)
    32  	}
    33  	t.ints = i
    34  	return nil
    35  }
    36  func (t *intarrayFlag) String() string {
    37  	return t.name
    38  }
    39  func (t *intarrayFlag) Contains(val uint64) bool {
    40  	for _, i := range t.ints {
    41  		if i == val {
    42  			return true
    43  		}
    44  	}
    45  	return false
    46  }
    47  

View as plain text