api-server/utils/viper.go
2024-09-24 13:31:28 +08:00

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("配置文件内容加载成功")
}