package config import ( "io" "log" "os" "github.com/BurntSushi/toml" ) type StackConfiguration struct { ConfigLoaded bool AllowFreshAdminGeneration bool AdminEmails []string AdminHmacEnv string UserHmacEnv string AuthedRateLimitConfig string UnauthedRateLimitConfig string DbDialect string DbUsername string DbPasswordSecret string DbUrl string DbPort string DbName string } var Environment = os.Getenv("STACK_ENVIRONMENT") var configInternal = StackConfiguration{} func Config() StackConfiguration { return configInternal } func GetConfigPath(filename string) string { if Environment == "" { Environment = "dev" } return "config/" + Environment + "/" + filename } func LoadConfig() { file, err := os.Open(GetConfigPath("conf.toml")) if err != nil { panic(err) } defer file.Close() b, err := io.ReadAll(file) if err != nil { panic(err) } err = toml.Unmarshal(b, &configInternal) if err != nil { panic(err) } configInternal.ConfigLoaded = true log.Printf("Loaded Config for stack '%s': %+v", Environment, configInternal) }