diff --git a/cmd/root.go b/cmd/root.go index 073653b4..f5d6401c 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -32,6 +32,7 @@ import ( var ( cfgFile string + envFile string subCommand string logWithCommand log.Entry ) @@ -102,6 +103,7 @@ func init() { viper.AutomaticEnv() rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file location") + rootCmd.PersistentFlags().StringVar(&envFile, "env", "", "environment file location") rootCmd.PersistentFlags().String("client-ipcPath", "", "location of geth.ipc file") rootCmd.PersistentFlags().String("log-level", log.InfoLevel.String(), "log level (trace, debug, info, warn, error, fatal, panic)") @@ -124,21 +126,32 @@ func init() { } func initConfig() { - if cfgFile == "" { - log.Warn("No config file passed with --config flag") - return + if cfgFile == "" && envFile == "" { + log.Fatal("No configuration file specified, use --config , --env flag to provide configuration") } - viper.SetConfigFile(cfgFile) - if err := viper.ReadInConfig(); err != nil { - log.Fatalf("Couldn't read config file: %s", err.Error()) - } - - log.Infof("Using config file: %s", viper.ConfigFileUsed()) - - if filepath.Ext(cfgFile) == ".env" { - if err := godotenv.Load(cfgFile); err != nil { - log.Fatalf("Failed to set environment variable from config file: %s", err.Error()) + if cfgFile != "" { + if filepath.Ext(cfgFile) != ".toml" { + log.Fatal("Provide .toml file for --config flag") } + + viper.SetConfigFile(cfgFile) + if err := viper.ReadInConfig(); err != nil { + log.Fatalf("Couldn't read config file: %s", err.Error()) + } + + log.Infof("Using config file: %s", viper.ConfigFileUsed()) + } + + if envFile != "" { + if filepath.Ext(envFile) != ".env" { + log.Fatal("Provide .env file for --env flag") + } + + if err := godotenv.Load(envFile); err != nil { + log.Fatalf("Failed to set environment variable from env file: %s", err.Error()) + } + + log.Infof("Using env file: %s", envFile) } } diff --git a/go.sum b/go.sum index 275b0024..010afaaf 100644 --- a/go.sum +++ b/go.sum @@ -1841,13 +1841,6 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -<<<<<<< HEAD -||||||| parent of af4d66d4 (Update go.mod.) -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d h1:LO7XpTYMwTqxjLcGWPijK3vRXg1aWdlNOVOHRq45d7c= -======= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= ->>>>>>> af4d66d4 (Update go.mod.) golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=