50 lines
833 B
Go
50 lines
833 B
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 {
|
|
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
|
|
}
|