mirror of
https://github.com/makayabou/asg-server.git
synced 2026-05-02 17:43:36 +02:00
49 lines
799 B
Go
49 lines
799 B
Go
package config
|
|
|
|
import (
|
|
"errors"
|
|
"io/fs"
|
|
"os"
|
|
"sync"
|
|
|
|
microbase "bitbucket.org/soft-c/gomicrobase"
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
type Config struct {
|
|
HTTP microbase.HTTPConfig `yaml:"http"`
|
|
Database microbase.DatabaseConfig `yaml:"database"`
|
|
}
|
|
|
|
var instance *Config
|
|
var once = sync.Once{}
|
|
|
|
func newConfig() *Config {
|
|
if err := godotenv.Load(".env"); err != nil {
|
|
if !errors.Is(err, fs.ErrNotExist) {
|
|
errorLog.Println(err)
|
|
}
|
|
}
|
|
|
|
path := os.Getenv("CONFIG_PATH")
|
|
if path == "" {
|
|
path = "config.yml"
|
|
}
|
|
|
|
config := Config{}
|
|
|
|
if err := microbase.LoadConfig(path, &config); err != nil {
|
|
errorLog.Fatalf("Can't load config from %s: %s", path, err.Error())
|
|
}
|
|
|
|
return &config
|
|
}
|
|
|
|
func GetConfig() Config {
|
|
once.Do(func() {
|
|
instance = newConfig()
|
|
})
|
|
|
|
return *instance
|
|
}
|