43 lines
786 B
Go
43 lines
786 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"strings"
|
||
|
|
||
|
"github.com/spf13/viper"
|
||
|
)
|
||
|
|
||
|
func ReadConfig() (*viper.Viper, error) {
|
||
|
defaults := map[string]any{
|
||
|
"name": "COOPGO Agenda",
|
||
|
"dev_env": false,
|
||
|
"storage": map[string]any{
|
||
|
"type": "mongodb",
|
||
|
"mongodb": map[string]any{
|
||
|
"host": "localhost",
|
||
|
"port": "27017",
|
||
|
"db_name": "coopgo_platform",
|
||
|
"collections": map[string]any{
|
||
|
"events": "diags",
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
"services": map[string]any{
|
||
|
"grpc": map[string]any{
|
||
|
"enable": true,
|
||
|
"port": 8098,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
v := viper.New()
|
||
|
for key, value := range defaults {
|
||
|
v.SetDefault(key, value)
|
||
|
}
|
||
|
v.SetConfigName("config")
|
||
|
v.AddConfigPath(".")
|
||
|
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
||
|
v.AutomaticEnv()
|
||
|
err := v.ReadInConfig()
|
||
|
return v, err
|
||
|
}
|