50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
type Config struct {
|
|
Host string `mapstructure:"host"`
|
|
RunMode string `mapstructure:"run-mode"`
|
|
Redis Redis `mapstructure:"redis"`
|
|
}
|
|
type Redis struct {
|
|
Host string `mapstructure:"host"`
|
|
Password string `mapstructure:"password"`
|
|
DB int `mapstructure:"db"`
|
|
}
|
|
|
|
var APPConfig Config
|
|
|
|
func InitConfig() {
|
|
//设置默认值
|
|
defaultConf := Config{
|
|
Host: "0.0.0.0:8080",
|
|
RunMode: "release",
|
|
Redis: Redis{
|
|
Host: "localhost:6379",
|
|
Password: "",
|
|
DB: 0,
|
|
},
|
|
}
|
|
viper.SetDefault("host", defaultConf.Host)
|
|
viper.SetDefault("run-mode", defaultConf.RunMode)
|
|
viper.SetDefault("redis", defaultConf.Redis)
|
|
//设置配置文件名和路径 ./config.toml
|
|
viper.AddConfigPath(".")
|
|
viper.SetConfigName("config")
|
|
viper.SetConfigType("toml")
|
|
viper.SafeWriteConfig() //安全写入默认配置
|
|
//读取配置文件
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
fmt.Errorf("无法读取配置文件: %w", err)
|
|
}
|
|
//解析配置文件
|
|
if err := viper.Unmarshal(&APPConfig); err != nil {
|
|
fmt.Errorf("无法解析配置: %w", err)
|
|
}
|
|
}
|