cmd/root.go (48 lines of code) (raw):

// Copyright (c) 2022 EPAM Systems, Inc. // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. package cmd import ( "fmt" "os" "strings" "github.com/epam/hub-dexctl/config" "github.com/spf13/cobra" "github.com/spf13/viper" ) var rootCmd = &cobra.Command{ Use: "dex-grpc-client", Short: "gRPC client for Dex A Federated OpenID Connect Provider", } func Execute() { if err := rootCmd.Execute(); err != nil { fmt.Println(err) os.Exit(1) } } func init() { cobra.OnInitialize(initConfig) rootCmd.PersistentFlags().StringVar(&config.Host, "host", "127.0.0.1", "Host address of Dex API") rootCmd.PersistentFlags().StringVar(&config.Port, "port", "5557", "Port of Dex API") rootCmd.PersistentFlags().StringVar(&config.CaPath, "ca-path", "", "Path to CA certificate file") rootCmd.PersistentFlags().StringVar(&config.ClientCrt, "client-crt", "", "Path to client certificate file") rootCmd.PersistentFlags().StringVar(&config.ClientKey, "client-key", "", "Path to client key file") rootCmd.PersistentFlags().BoolVar(&config.SkipExitCode, "skip-exit-code", false, "Skip exit code on error") } func initConfig() { viper.SetEnvPrefix("dex_api") viper.SetEnvKeyReplacer(strings.NewReplacer("-", "_", ".", "_")) viper.AutomaticEnv() if host := viper.GetString("host"); host != "" { config.Host = host } if port := viper.GetString("port"); port != "" { config.Port = port } if caPath := viper.GetString("ca-path"); caPath != "" { config.CaPath = caPath } if clientCrt := viper.GetString("client-crt"); clientCrt != "" { config.ClientCrt = clientCrt } if clientKey := viper.GetString("client-key"); clientKey != "" { config.ClientKey = clientKey } }