Bladeren bron

feat(config): 增强配置加载功能- 改进未知配置键的错误信息,包含具体键名
- 支持设置默认配置函数,在配置加载完成后执行
- 添加 SetDefaultCfg 方法用于注册默认配置处理函数
- 在配置解析后调用默认配置函数(如果已设置)

dcsunny 1 maand geleden
bovenliggende
commit
b148fe712a
1 gewijzigde bestanden met toevoegingen van 13 en 1 verwijderingen
  1. 13 1
      config/load.go

+ 13 - 1
config/load.go

@@ -44,7 +44,7 @@ func Load(sources []Source, bc any) error {
 		config.WithDecoder(func(kv *config.KeyValue, v map[string]interface{}) error {
 			ok := sourceMap.Has(kv.Key)
 			if !ok {
-				return errors.New("unknown config key")
+				return fmt.Errorf("unknown config key,key:%s", kv.Key)
 			}
 
 			next := map[string]any{}
@@ -73,6 +73,10 @@ func Load(sources []Source, bc any) error {
 				return err
 			}
 
+			if defaultCfg != nil {
+				defaultCfg(bc)
+			}
+
 			return nil
 		}),
 	)
@@ -82,6 +86,14 @@ func Load(sources []Source, bc any) error {
 	return nil
 }
 
+type DefaultCfg func(bc any)
+
+var defaultCfg DefaultCfg
+
+func SetDefaultCfg(f DefaultCfg) {
+	defaultCfg = f
+}
+
 func convertMap(src interface{}) interface{} {
 	switch m := src.(type) {
 	case map[string]interface{}: