package helpers import ( "os" "github.com/golobby/dotenv" ) type Config struct { Debug bool `env:"DEBUG"` DevMode bool `env:"DEV_MODE"` App struct { ListenAddress string `env:"APP_LISTEN_ADDRESS"` ListenPort uint `env:"APP_LISTEN_PORT"` } Database struct { Location string `env:"DATABASE_LOCATION"` } Sessions struct { Location string `env:"SESSIONS_LOCATION"` } } var configParsed bool var config Config func GetConfig() (Config, error) { if configParsed { return config, nil } return parseConfig() } func parseConfig() (Config, error) { file, err := os.Open(".env") if err != nil { return config, err } err = dotenv.NewDecoder(file).Decode(&config) if err != nil { return config, err } configParsed = true return config, err }