package cmd
import (
"github.com/spf13/cobra"
"golang.org/x/xerrors"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/credentials/insecure"
)
var clientCmd = &cobra.Command{
Use: "client",
Short: "client that talks to a ws-daemond to initialize workspace",
Args: cobra.ExactArgs(1),
}
var clientConfig struct {
host string
cert string
}
func init() {
clientCmd.PersistentFlags().StringVarP(&clientConfig.host, "host", "H", "", "HTTP host to connect to")
clientCmd.PersistentFlags().StringVarP(&clientConfig.cert, "tls", "t", "", "TLS certificate when connecting to a secured gRPC endpoint")
rootCmd.AddCommand(clientCmd)
}
func getGRPCConnection() (*grpc.ClientConn, error) {
secopt := grpc.WithTransportCredentials(insecure.NewCredentials())
if clientConfig.cert != "" {
creds, err := credentials.NewClientTLSFromFile(clientConfig.cert, "")
if err != nil {
return nil, xerrors.Errorf("could not load tls cert: %w", err)
}
secopt = grpc.WithTransportCredentials(creds)
}
conn, err := grpc.Dial(clientConfig.host, secopt)
if err != nil {
return nil, err
}
return conn, nil
}