| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package cmd
- import (
- "fmt"
- "github.com/certusone/wormhole/node/cmd/debug"
- "github.com/certusone/wormhole/node/cmd/spy"
- "github.com/certusone/wormhole/node/pkg/version"
- "os"
- "github.com/spf13/cobra"
- homedir "github.com/mitchellh/go-homedir"
- "github.com/spf13/viper"
- "github.com/certusone/wormhole/node/cmd/guardiand"
- )
- var cfgFile string
- // rootCmd represents the base command when called without any subcommands
- var rootCmd = &cobra.Command{
- Use: "guardiand",
- Short: "Wormhole guardian node",
- }
- // Top-level version subcommand
- var versionCmd = &cobra.Command{
- Use: "version",
- Short: "Display binary version information",
- Run: func(cmd *cobra.Command, args []string) {
- fmt.Println(version.Version())
- },
- }
- // Execute adds all child commands to the root command and sets flags appropriately.
- // This is called by main.main(). It only needs to happen once to the rootCmd.
- func Execute() {
- if err := rootCmd.Execute(); err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- }
- func init() {
- cobra.OnInitialize(initConfig)
- rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.guardiand.yaml)")
- rootCmd.AddCommand(guardiand.NodeCmd)
- rootCmd.AddCommand(spy.SpyCmd)
- rootCmd.AddCommand(guardiand.KeygenCmd)
- rootCmd.AddCommand(guardiand.AdminCmd)
- rootCmd.AddCommand(guardiand.TemplateCmd)
- rootCmd.AddCommand(versionCmd)
- rootCmd.AddCommand(debug.DebugCmd)
- }
- // initConfig reads in config file and ENV variables if set.
- func initConfig() {
- if cfgFile != "" {
- // Use config file from the flag.
- viper.SetConfigFile(cfgFile)
- } else {
- // Find home directory.
- home, err := homedir.Dir()
- if err != nil {
- fmt.Println(err)
- os.Exit(1)
- }
- // Search config in home directory with name ".guardiand" (without extension).
- viper.AddConfigPath(home)
- viper.SetConfigName(".guardiand.yaml")
- }
- viper.AutomaticEnv() // read in environment variables that match
- // If a config file is found, read it in.
- if err := viper.ReadInConfig(); err == nil {
- fmt.Println("Using config file:", viper.ConfigFileUsed())
- }
- }
|