67 lines
1.1 KiB
Go
67 lines
1.1 KiB
Go
package myconf
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/spf13/pflag"
|
|
"github.com/spf13/viper"
|
|
"log"
|
|
)
|
|
|
|
type Config struct {
|
|
*viper.Viper
|
|
}
|
|
|
|
var (
|
|
conf = &Config{Viper: viper.New()}
|
|
)
|
|
|
|
// 加载命令行参数
|
|
func LoadFlag() {
|
|
if !pflag.Parsed() {
|
|
pflag.Parse()
|
|
}
|
|
err := conf.BindPFlags(pflag.CommandLine)
|
|
if err != nil {
|
|
panic(fmt.Errorf("load command line fail: %s", err))
|
|
}
|
|
}
|
|
|
|
// 指定文件加载
|
|
func LoadFile(confFile string) {
|
|
log.Printf("read conf file: %s", confFile)
|
|
|
|
conf.SetConfigFile(confFile)
|
|
err := conf.ReadInConfig()
|
|
if err != nil {
|
|
panic(fmt.Errorf("read file fail: %s", err))
|
|
}
|
|
}
|
|
|
|
func Conf() *Config {
|
|
return conf
|
|
}
|
|
|
|
func (c *Config) GetStringDefault(key, defaultVal string) string {
|
|
v := c.GetString(key)
|
|
if v == "" {
|
|
return defaultVal
|
|
}
|
|
return v
|
|
}
|
|
|
|
func (c *Config) GetIntDefault(key string, defaultVal int) int {
|
|
v := c.GetString(key) // 未设置 空字符串
|
|
if v == "" {
|
|
return defaultVal
|
|
}
|
|
return c.GetInt(key)
|
|
}
|
|
|
|
func (c *Config) GetBoolDefault(key string, defaultVal bool) bool {
|
|
v := c.GetString(key) // 未设置 空字符串
|
|
if v == "" {
|
|
return defaultVal
|
|
}
|
|
return c.GetBool(key)
|
|
}
|