41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"api/config"
|
|
"flag"
|
|
"github.com/spf13/viper"
|
|
"log"
|
|
"strings"
|
|
)
|
|
|
|
// InitViper 优先级: 方法传参 > 命令行 > 默认值
|
|
func InitViper() {
|
|
// 根据命令行读取配置文件路径
|
|
var configPath string
|
|
flag.StringVar(&configPath, "c", "", "chosse config file.")
|
|
flag.Parse()
|
|
if configPath != "" { // 命令行读取到参数
|
|
log.Printf("您正在使用命令行的-c参数传递的值,config的路径为 %s\n", configPath)
|
|
} else { // 命令行未读取到参数
|
|
log.Println("命令行参数为空, 默认加载: config/config.yaml")
|
|
configPath = "config/config.yaml"
|
|
}
|
|
|
|
// 目前读取固定固定路径的配置文件
|
|
v := viper.New()
|
|
v.SetConfigFile(configPath)
|
|
v.AutomaticEnv() // 允许使用环境变量
|
|
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) // SERVER_APPMODE => SERVER.APPMODE
|
|
|
|
// 读取配置文件
|
|
if err := v.ReadInConfig(); err != nil {
|
|
log.Panic("配置文件读取失败: ", err)
|
|
}
|
|
|
|
// 加载配置文件内容到结构体对象
|
|
if err := v.Unmarshal(&config.Cfg); err != nil {
|
|
log.Panic("配置文件内容加载失败: ", err)
|
|
}
|
|
log.Println("配置文件内容加载成功")
|
|
}
|