...
1 package utils
2
3 import (
4 "flag"
5 "strconv"
6 "strings"
7 )
8
9
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