gohome
1package config
2
3import (
4"path"
5"strings"
6
7"github.com/kelseyhightower/envconfig"
8"go.uber.org/config"
9"go.uber.org/fx"
10
11"gohome.4gophers.ru/getapp/gohome/app/server"
12"gohome.4gophers.ru/getapp/gohome/pkg/logger"
13)
14
15type Config struct {
16fx.Out
17
18Logger logger.Config
19Server server.Config
20}
21
22func New(env string, cfg string) Config {
23if env == "base" {
24panic("'base' can not be environment")
25}
26
27y, err := config.NewYAML(
28config.File(path.Join(cfg, "base.yml")),
29config.File(path.Join(cfg, env+".yml")),
30)
31if err != nil {
32panic(err)
33}
34
35c := Config{}
36err = y.Get("").Populate(&c)
37if err != nil {
38panic(err)
39}
40
41err = envconfig.Process(strings.ReplaceAll("lokalization", "-", ""), &c)
42if err != nil {
43panic(err)
44}
45
46return c
47}
48