1 Star 1 Fork 2

kristas / booting-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
loader.go 1.93 KB
一键复制 编辑 原始数据 按行查看 历史
kristas 提交于 2021-09-17 16:31 . feat: rebuild log
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
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/kristas/booting-go.git
git@gitee.com:kristas/booting-go.git
kristas
booting-go
booting-go
v1.3.7

搜索帮助

344bd9b3 5694891 D2dac590 5694891