diff --git a/cmd/root.go b/cmd/root.go index 4e8ac521..073653b4 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -19,11 +19,14 @@ package cmd import ( "fmt" "os" + "path/filepath" "strings" + "github.com/joho/godotenv" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/viper" + "github.com/vulcanize/ipld-eth-server/pkg/prom" ) @@ -121,14 +124,21 @@ func init() { } func initConfig() { - if cfgFile != "" { - viper.SetConfigFile(cfgFile) - if err := viper.ReadInConfig(); err == nil { - log.Printf("Using config file: %s", viper.ConfigFileUsed()) - } else { - log.Fatal(fmt.Sprintf("Couldn't read config file: %s", err.Error())) - } - } else { + if cfgFile == "" { log.Warn("No config file passed with --config flag") + return + } + + 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()) + } } } diff --git a/go.mod b/go.mod index 9fcc2576..b9ca1ec9 100644 --- a/go.mod +++ b/go.mod @@ -7,13 +7,12 @@ require ( github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/graph-gophers/graphql-go v0.0.0-20201113091052-beb923fada29 github.com/ipfs/go-block-format v0.0.3 - github.com/ipfs/go-blockservice v0.1.7 github.com/ipfs/go-cid v0.0.7 - github.com/ipfs/go-ipfs v0.10.0 github.com/ipfs/go-ipfs-blockstore v1.0.1 github.com/ipfs/go-ipfs-ds-help v1.0.0 github.com/ipfs/go-ipld-format v0.2.0 github.com/jmoiron/sqlx v1.2.0 + github.com/joho/godotenv v1.4.0 github.com/lib/pq v1.10.4 github.com/machinebox/graphql v0.2.2 github.com/mailgun/groupcache/v2 v2.2.1 diff --git a/go.sum b/go.sum index 1c0fce9f..dd0fea5e 100644 --- a/go.sum +++ b/go.sum @@ -754,6 +754,8 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA= github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= +github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=