portainer/api/flags.go

65 lines
1.3 KiB
Go

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,
}
}