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

update

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