pop-camarades/helpers/config.go

62 lines
1.2 KiB
Go

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"`
BehindProxy bool `env:"APP_BEHIND_PROXY"`
}
Database struct {
DSN string `env:"DATABASE_DSN"`
}
Sessions struct {
Location string `env:"SESSIONS_LOCATION"`
}
Authelia struct {
UsersLocation string `env:"AUTHELIA_USERS_LOCATION"`
ResetURL string `env:"AUTHELIA_RESET_URL"`
}
Mail struct {
Host string `env:"MAIL_HOST"`
Port int `env:"MAIL_PORT"`
Username string `env:"MAIL_USERNAME"`
Password string `env:"MAIL_PASSWORD"`
FromName string `env:"MAIL_FROM_NAME"`
FromAddress string `env:"MAIL_FROM_ADDRESS"`
}
}
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
}