grpc/client/flags.go

46 lines
1.3 KiB
Go
Raw Normal View History

package client
import (
"fmt"
"strings"
"github.com/caitlinelfring/go-env-default"
"github.com/spf13/pflag"
)
var u = strings.ToUpper
func NewFlagSet() (*pflag.FlagSet, Option) {
const (
addr = "address"
secure = "secure"
caCert = "ca-cert"
clientCert = "client-cert"
clientKey = "client-key"
)
var (
optAddress string
optSecure bool
optCACert string
optCert string
optKey string
)
flags := pflag.NewFlagSet("gRPC", pflag.ContinueOnError)
flags.StringVar(&optAddress, addr, env.GetDefault(u(addr), "0.0.0.0:0"), "Bind address for the server. 127.0.0.1:9090"+flagEnv(addr))
flags.BoolVar(&optSecure, secure, env.GetBoolDefault(u(secure), true), "Generate self signed certificate if none provided"+flagEnv(secure))
flags.StringVar(&optCACert, caCert, "", "Path to Root CA certificate"+flagEnv(optCACert))
flags.StringVar(&optCert, clientCert, "", "Path to Server certificate"+flagEnv(clientCert))
flags.StringVar(&optKey, clientKey, "", "Path to Server key"+flagEnv(clientKey))
return flags, func(o *options) {
o.addr = optAddress
o.secure = optSecure
o.caCert = optCACert
o.cert = optCert
o.key = optKey
}
}
func flagEnv(name string) string {
return fmt.Sprintf(" [$%s]", strings.Replace(u(name), "-", "_", -1))
}