vRp.CD2g_test/planner/configexport/internal/template.go

107 lines
2.6 KiB
Go

package internal
const (
generateConfigTemplate = `
// {{.Name}}Define {{.DisplayName}}
type {{.Name}}Define struct {
{{range $index, $value := .Fields}}{{if eq $value.Server true}}{{if eq $value.Ignore false}}{{$value.Name}} {{$value.Type}} // {{$value.Describe}}{{end}}{{end}}
{{end}}
}
func (slf *{{.Name}}Define) String() string {
if data, err := json.Marshal(slf); err == nil {
return string(data)
}
return "{}"
}
{{range $index, $value := .Fields}}{{$value}}{{end}}
`
generateGoStructTemplate = `
{{if eq .Ignore false}}
type {{.TypeNotStar}} struct {
{{range $index, $value := .Fields}}
{{$value.Name}} {{$value.Type}}
{{end}}
}
{{end}}
`
GenerateGoConfigTemplate = `// Code generated by minotaur-config-export. DO NOT EDIT.
package {{.Package}}
import (
jsonIter "github.com/json-iterator/go"
"github.com/kercylan98/minotaur/utils/log"
"go.uber.org/zap"
"os"
)
var json = jsonIter.ConfigCompatibleWithStandardLibrary
var full map[string]any
var (
{{range $index, $config := .Configs}}
// {{$config.Name}} {{$config.DisplayName}}
{{$config.Name}} {{$config.GetVariable}}
_{{$config.Name}} {{$config.GetVariable}}
{{end}}
)
func LoadConfig(handle func(filename string, config any) error) {
var err error
{{range $index, $config := .Configs}}
_{{$config.Name}} = {{$config.GetVariableGen}}
{{if eq $config.IndexCount 0}}
if err = handle("{{$config.Prefix}}{{$config.Name}}.json", _{{$config.Name}}); err != nil {
log.Error("Config", zap.String("Name", "{{$config.Name}}"), zap.Bool("Invalid", true), zap.Error(err))
}
{{else}}
if err = handle("{{$config.Prefix}}{{$config.Name}}.json", &_{{$config.Name}}); err != nil {
log.Error("Config", zap.String("Name", "{{$config.Name}}"), zap.Bool("Invalid", true), zap.Error(err))
}
{{end}}
{{end}}
}
// Refresh 将加载后的配置刷新到线上
func Refresh() {
full = make(map[string]any)
{{range $index, $config := .Configs}}
{{$config.Name}} = _{{$config.Name}}
full["{{$config.Name}}"] = {{$config.Name}}
{{end}}
}
// DefaultLoad 默认提供的配置加载函数
func DefaultLoad(filepath string) {
LoadConfig(func(filename string, config any) error {
bytes, err := os.ReadFile(filepath)
if err != nil {
return err
}
return json.Unmarshal(bytes, &config)
})
}
// GetFull 获取所有配置的 map 集合
// - 通常用于前端配置通过后端接口获取的情况
func GetFull() map[string]any {
return full
}
`
GenerateGoDefineTemplate = `// Code generated by minotaur-config-export. DO NOT EDIT.
package {{.Package}}
{{range $index, $config := .Configs}}
{{$config.String}}
{{end}}
`
)