package main import ( "fmt" "gopkg.in/alecthomas/kingpin.v2" "strings" ) // TLSFlags defines all the flags associated to the SSL configuration type TLSFlags struct { tls bool caPath string certPath string keyPath string } // pair defines a key/value pair type pair struct { Name string `json:"name"` Value string `json:"value"` } // pairList defines an array of Label type pairList []pair // Set implementation for Labels func (l *pairList) Set(value string) error { parts := strings.SplitN(value, "=", 2) if len(parts) != 2 { return fmt.Errorf("expected NAME=VALUE got '%s'", value) } p := new(pair) p.Name = parts[0] p.Value = parts[1] *l = append(*l, *p) return nil } // String implementation for Labels func (l *pairList) String() string { return "" } // IsCumulative implementation for Labels func (l *pairList) IsCumulative() bool { return true } // LabelParser defines a custom parser for Labels flags func pairs(s kingpin.Settings) (target *[]pair) { target = new([]pair) s.SetValue((*pairList)(target)) return } // newTLSFlags creates a new TLSFlags from command flags func newTLSFlags(tls bool, cacert string, cert string, key string) TLSFlags { return TLSFlags{ tls: tls, caPath: cacert, certPath: cert, keyPath: key, } }