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 }