Files
gin-gonic-prepack/config/config.go
2025-10-13 20:53:49 +02:00

69 lines
1.4 KiB
Go

package config
import (
"io"
"log"
"os"
"github.com/BurntSushi/toml"
)
type DbConfig struct {
Dialect string `toml:"dialect"`
Username string `toml:"username"`
PasswordSecret string `toml:"password-secret"`
Url string `toml:"url"`
Port string `toml:"port"`
Name string `toml:"name"`
}
type StackConfiguration struct {
ConfigLoaded bool
AllowFreshAdminGeneration bool `toml:"gen-fresh-admin"`
AdminEmails []string `toml:"admin-emails"`
AdminHmacEnv string `toml:"admin-hmac-env"`
UserHmacEnv string `toml:"user-hmac-env"`
AuthedRateLimitConfig string `toml:"auth-rate-limit-defs"`
UnauthedRateLimitConfig string `toml:"unauth-rate-limit-defs"`
Db DbConfig `toml:"db"`
}
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':\n%+v\n", Environment, configInternal)
}