提交 6847a260 authored 作者: mooncake9527's avatar mooncake9527

update

上级 11e6d6a1
...@@ -36,7 +36,9 @@ func parse() (err error) { ...@@ -36,7 +36,9 @@ func parse() (err error) {
if confType == "local" { if confType == "local" {
localConf() localConf()
logger.Infof("[conf]conf:%s", Cfg.Local.Conf) logger.Infof("[conf]conf:%s", Cfg.Local.Conf)
return parseLocal(Cfg.Local.Conf, Cfg) return parseLocal(Cfg.Local.Conf, Cfg, func() {
ParseExtend()
})
} }
if confType == "consul" { if confType == "consul" {
consulConf() consulConf()
...@@ -87,6 +89,7 @@ func ParseExtend() error { ...@@ -87,6 +89,7 @@ func ParseExtend() error {
if err := subv.Unmarshal(extend); err != nil { if err := subv.Unmarshal(extend); err != nil {
return err return err
} }
logger.Info("[conf]", logger.Any("extend", extend))
} }
} }
return nil return nil
......
...@@ -6,6 +6,7 @@ import ( ...@@ -6,6 +6,7 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"os"
"path" "path"
"path/filepath" "path/filepath"
"strings" "strings"
...@@ -22,6 +23,11 @@ func parseLocal(configFile string, obj ICfg, reloads ...func()) error { ...@@ -22,6 +23,11 @@ func parseLocal(configFile string, obj ICfg, reloads ...func()) error {
if err != nil { if err != nil {
return err return err
} }
if content, err := os.ReadFile(configFile); err == nil {
obj.SetContent(content)
}
filePathStr, filename := filepath.Split(confFileAbs) filePathStr, filename := filepath.Split(confFileAbs)
ext := strings.TrimLeft(path.Ext(filename), ".") ext := strings.TrimLeft(path.Ext(filename), ".")
filename = strings.ReplaceAll(filename, "."+ext, "") // excluding suffix names filename = strings.ReplaceAll(filename, "."+ext, "") // excluding suffix names
...@@ -41,17 +47,20 @@ func parseLocal(configFile string, obj ICfg, reloads ...func()) error { ...@@ -41,17 +47,20 @@ func parseLocal(configFile string, obj ICfg, reloads ...func()) error {
obj.Unlock() obj.Unlock()
if len(reloads) > 0 { if len(reloads) > 0 {
watchConfig(obj, reloads...) watchConfig(configFile, obj, reloads...)
} }
return nil return nil
} }
func watchConfig(obj ICfg, reloads ...func()) { func watchConfig(confFile string, obj ICfg, reloads ...func()) {
viper.WatchConfig() viper.WatchConfig()
// Note: OnConfigChange is called twice on Windows // Note: OnConfigChange is called twice on Windows
viper.OnConfigChange(func(e fsnotify.Event) { viper.OnConfigChange(func(e fsnotify.Event) {
if content, err := os.ReadFile(confFile); err == nil {
obj.SetContent(content)
}
obj.Lock() obj.Lock()
if err := viper.Unmarshal(obj); err != nil { if err := viper.Unmarshal(obj); err != nil {
obj.Unlock() obj.Unlock()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论