-
Notifications
You must be signed in to change notification settings - Fork 0
/
init.go
57 lines (47 loc) · 1.37 KB
/
init.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package sca_base_module_config
import (
project_root_directory "github.com/golang-infrastructure/go-project-root-directory"
"github.com/spf13/viper"
)
const DefaultConfigName = "config"
var Config *Configuration
// TODO 此处的自动初始化处理得不好
func init() {
// 如果配置了不自动初始化,则跳过此初始化过程
if !GetEnvBoolOrDefault(ScaAutoInitConfigEnvName, true) {
return
}
err := InitDefault()
if err != nil {
panic(err)
}
}
// InitDefault 初始化默认
func InitDefault() error {
var err error
Config, err = Init(DefaultConfigName)
return err
}
// Init 初始化配置文件
func Init(configName string) (*Configuration, error) {
// 如果是相对路径的话,认为是从项目根目录开始的相对路径
projectRootPath, err := project_root_directory.GetRootDirectory()
if err != nil {
return nil, err
}
configFileViper := viper.New()
configFileViper.AddConfigPath(projectRootPath) //设置读取的文件路径
configFileViper.SetConfigName(configName) //设置读取的文件名
configFileViper.SetConfigType("yaml") //设置文件的类型
//尝试进行配置读取
if err := configFileViper.ReadInConfig(); err != nil {
return nil, err
}
config := &Configuration{}
err = configFileViper.Unmarshal(&config)
if err != nil {
return nil, err
}
config.Viper = configFileViper
return config, nil
}