package config import ( "fmt" "github.com/joho/godotenv" "github.com/kelseyhightower/envconfig" ) type Config struct { BbId string `required:"true" split_words:"true"` BbKey string `required:"true" split_words:"true"` LogLevel uint32 `required:"false" split_words:"true" default:"4"` // Mail vars MailTo string `required:"true" split_words:"true"` MailHost string `required:"true" split_words:"true"` MailPort string `required:"true" split_words:"true"` MailUser string `required:"true" split_words:"true"` MailFrom string `required:"true" split_words:"true"` MailPassword string `required:"true" split_words:"true"` } func NewConfig(envFile string) *Config { if envFile != "" { err := godotenv.Load(envFile) if err != nil { panic(fmt.Errorf("godotenv.Load: %w", err)) } } cfg := &Config{} err := envconfig.Process("", cfg) if err != nil { panic(fmt.Errorf("envconfig.Process: %w", err)) } return cfg }