34 lines
644 B
Go
34 lines
644 B
Go
package config
|
|
|
|
import (
|
|
"github.com/ilyakaznacheev/cleanenv"
|
|
"sync"
|
|
)
|
|
|
|
type Config struct {
|
|
API struct {
|
|
Token string `env:"TOKEN" env-layout:"string" env-required:"true"`
|
|
Owner int `env:"OWNER" env-layout:"int" env-required:"true"`
|
|
}
|
|
Paths struct {
|
|
Docs string `env:"DOCS_PATH" env-layout:"string" env-default:"docs" env-upd:"true"`
|
|
}
|
|
}
|
|
|
|
var (
|
|
cfg Config //nolint:gochecknoglobals // singleton globals
|
|
once sync.Once //nolint:gochecknoglobals // singleton globals
|
|
)
|
|
|
|
// GetConfig can panic
|
|
func GetConfig() Config {
|
|
once.Do(func() {
|
|
err := cleanenv.ReadEnv(&cfg)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
})
|
|
|
|
return cfg
|
|
}
|