mirror of https://github.com/portainer/portainer
65 lines
1.3 KiB
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,
|
|
}
|
|
}
|