代码拉取完成,页面将自动刷新
package configure
import (
_ "embed"
"encoding/json"
"gitee.com/kristas/booting-go/framework/common/util/config_merge"
"gitee.com/kristas/booting-go/framework/common/util/lang"
"gopkg.in/yaml.v3"
"os"
)
//ConfigReader returns byte array only support json and yaml
type ConfigReader func(environment string) []byte
var (
env string
_config = make(map[string]interface{})
//readers = []ConfigReader{
// localConfigReader,
//}
)
func AddConfigReader(reader ConfigReader) {
SetConfig(reader(env))
//readers = append(readers, reader)
}
func GetConfig() map[string]interface{} {
return _config
}
func Init(environment string) {
env = environment
SetConfig(localConfigReader(env))
//for _, reader := range readers {
// SetConfig(reader(environment))
//}
}
func SetConfig(config []byte) {
var tmp = make(map[string]interface{})
err := yaml.Unmarshal(config, tmp)
if err != nil {
panic(err)
}
_config = config_merge.MergeMap(_config, tmp)
}
func localConfigReader(environment string) []byte {
var configMap = make(map[string]interface{})
configPaths := localConfigOrders(environment)
for _, path := range configPaths {
bytes, err := os.ReadFile(path)
if err != nil {
continue
}
var tmp = make(map[string]interface{})
err = yaml.Unmarshal(bytes, tmp)
if err != nil {
panic(err)
}
configMap = config_merge.MergeMap(configMap, tmp)
}
bytes, err := yaml.Marshal(configMap)
if err != nil {
panic(err)
}
return bytes
}
//go:embed config_source.json
var embedSource []byte
type configSource struct {
In []string `json:"in"`
Names []string `json:"names"`
}
func localConfigOrders(environment string) []string {
var cs configSource
err := json.Unmarshal(embedSource, &cs)
if err != nil {
panic(err)
}
var sources []string
for _, in := range cs.In {
for _, name := range cs.Names {
sources = append(sources, lang.NewString(in).Concat(name).ReplaceAll("[env]", environment).String())
}
}
return sources
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。