Compare commits
2 Commits
dd33153ca1
...
85d7510113
Author | SHA1 | Date |
---|---|---|
lzf | 85d7510113 | |
lzf | a2a8cf0024 |
2
go.mod
2
go.mod
|
@ -8,6 +8,7 @@ require (
|
||||||
github.com/go-playground/validator/v10 v10.11.1
|
github.com/go-playground/validator/v10 v10.11.1
|
||||||
github.com/go-redis/redis/v8 v8.11.5
|
github.com/go-redis/redis/v8 v8.11.5
|
||||||
github.com/json-iterator/go v1.1.12
|
github.com/json-iterator/go v1.1.12
|
||||||
|
github.com/spf13/pflag v1.0.5
|
||||||
github.com/spf13/viper v1.14.0
|
github.com/spf13/viper v1.14.0
|
||||||
github.com/stretchr/testify v1.8.1
|
github.com/stretchr/testify v1.8.1
|
||||||
go.uber.org/zap v1.24.0
|
go.uber.org/zap v1.24.0
|
||||||
|
@ -36,7 +37,6 @@ require (
|
||||||
github.com/spf13/afero v1.9.3 // indirect
|
github.com/spf13/afero v1.9.3 // indirect
|
||||||
github.com/spf13/cast v1.5.0 // indirect
|
github.com/spf13/cast v1.5.0 // indirect
|
||||||
github.com/spf13/jwalterweatherman v1.1.0 // indirect
|
github.com/spf13/jwalterweatherman v1.1.0 // indirect
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
|
||||||
github.com/subosito/gotenv v1.4.2 // indirect
|
github.com/subosito/gotenv v1.4.2 // indirect
|
||||||
go.uber.org/atomic v1.10.0 // indirect
|
go.uber.org/atomic v1.10.0 // indirect
|
||||||
go.uber.org/multierr v1.9.0 // indirect
|
go.uber.org/multierr v1.9.0 // indirect
|
||||||
|
|
|
@ -4,43 +4,63 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/spf13/pflag"
|
"github.com/spf13/pflag"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
*viper.Viper
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
vp = viper.New()
|
conf = &Config{Viper: viper.New()}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 加载命令行参数
|
||||||
func LoadFlag() {
|
func LoadFlag() {
|
||||||
if !pflag.Parsed() {
|
if !pflag.Parsed() {
|
||||||
pflag.Parse()
|
pflag.Parse()
|
||||||
}
|
}
|
||||||
err := vp.BindPFlags(pflag.CommandLine)
|
err := conf.BindPFlags(pflag.CommandLine)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("load command line fail: %s", err))
|
panic(fmt.Errorf("load command line fail: %s", err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 指定文件加载
|
||||||
func LoadFile(confFile string) {
|
func LoadFile(confFile string) {
|
||||||
vp.SetConfigFile(confFile)
|
log.Printf("read conf file: %s", confFile)
|
||||||
err := vp.ReadInConfig()
|
|
||||||
|
conf.SetConfigFile(confFile)
|
||||||
|
err := conf.ReadInConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("read file fail: %s", err))
|
panic(fmt.Errorf("read file fail: %s", err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadFileTo(confFile string, conf interface{}) {
|
func Conf() *Config {
|
||||||
vp.SetConfigFile(confFile)
|
return conf
|
||||||
err := vp.ReadInConfig()
|
|
||||||
if err != nil {
|
|
||||||
panic(fmt.Errorf("read file fail: %s", err))
|
|
||||||
}
|
|
||||||
|
|
||||||
err = vp.Unmarshal(conf)
|
|
||||||
if err != nil {
|
|
||||||
panic(fmt.Errorf("parse file fail: %s", err))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Conf() *viper.Viper {
|
func (c *Config) GetStringDefault(key, defaultVal string) string {
|
||||||
return vp
|
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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
package myconf
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestConf(t *testing.T) {
|
|
||||||
type Config struct {
|
|
||||||
App struct {
|
|
||||||
Name string
|
|
||||||
Addr string
|
|
||||||
Port int
|
|
||||||
}
|
|
||||||
|
|
||||||
Redis struct {
|
|
||||||
Addr string
|
|
||||||
Db int
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var config = &Config{}
|
|
||||||
LoadFile("test.yaml", config)
|
|
||||||
fmt.Printf("%+v\n", config)
|
|
||||||
}
|
|
Loading…
Reference in New Issue