diff --git a/examples/simple-server-config/config/configs/config.define.go b/examples/simple-server-config/config/configs/config.define.go new file mode 100644 index 0000000..0a1756b --- /dev/null +++ b/examples/simple-server-config/config/configs/config.define.go @@ -0,0 +1,14 @@ +// Code generated by minotaur-config-export. DO NOT EDIT. +package configs + // SystemConfig 系统 +type SystemConfig struct { + Addr string // 监听地址 + Finish string // 启动完成 +} + + // WelcomeConfig 欢迎词 +type WelcomeConfig struct { + Id int // ID + Text string // 内容 +} + diff --git a/examples/simple-server-config/config/configs/config.go b/examples/simple-server-config/config/configs/config.go new file mode 100644 index 0000000..eda19c5 --- /dev/null +++ b/examples/simple-server-config/config/configs/config.go @@ -0,0 +1,47 @@ +// Code generated by minotaur-config-export. DO NOT EDIT. +package configs +import ( + jsonIter "github.com/json-iterator/go" + "github.com/kercylan98/minotaur/utils/log" + "go.uber.org/zap" + "os" +) + +var json = jsonIter.ConfigCompatibleWithStandardLibrary +var ( + ISystemConfig *SystemConfig + iSystemConfig *SystemConfig + IWelcomeConfig map[int]*WelcomeConfig + iWelcomeConfig map[int]*WelcomeConfig +) + +func LoadConfig(handle func(filename string, config any) error) { + var err error + iSystemConfig = new(SystemConfig) + if err = handle("SystemConfig.json", iSystemConfig); err != nil { + log.Error("Config", zap.String("Name", "SystemConfig"), zap.Bool("Invalid", true), zap.Error(err)) + } + + iWelcomeConfig = make(map[int]*WelcomeConfig) + if err = handle("WelcomeConfig.json", &iWelcomeConfig); err != nil { + log.Error("Config", zap.String("Name", "WelcomeConfig"), zap.Bool("Invalid", true), zap.Error(err)) + } + +} + +func Refresh() { + ISystemConfig = iSystemConfig + IWelcomeConfig = iWelcomeConfig +} + +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) + }) +} + diff --git a/examples/simple-server-config/config/系统配置.xlsx b/examples/simple-server-config/config/系统配置.xlsx new file mode 100644 index 0000000..41170a9 Binary files /dev/null and b/examples/simple-server-config/config/系统配置.xlsx differ diff --git a/examples/simple-server-config/main.go b/examples/simple-server-config/main.go new file mode 100644 index 0000000..7a47853 --- /dev/null +++ b/examples/simple-server-config/main.go @@ -0,0 +1,29 @@ +package main + +import ( + "github.com/kercylan98/minotaur/config" + "github.com/kercylan98/minotaur/examples/simple-server-config/config/configs" + "github.com/kercylan98/minotaur/planner/configexport" + "github.com/kercylan98/minotaur/utils/log" + "go.uber.org/zap" + "path/filepath" +) + +const ( + workdir = "./examples/simple-server-config" +) + +func main() { + export() + config.Init(filepath.Join(workdir, "config", "json"), configs.LoadConfig, configs.Refresh) + config.Load() + config.Refresh() + log.Info("Config", zap.Any("SystemConfig", configs.ISystemConfig)) + log.Info("Config", zap.Any("WelcomeConfig", configs.IWelcomeConfig)) +} + +func export() { + c := configexport.New(filepath.Join(workdir, "config", "系统配置.xlsx")) + c.ExportGo("", filepath.Join(workdir, "config", "configs")) + c.ExportServer("", filepath.Join(workdir, "config", "json")) +} diff --git a/planner/configexport/configexport.go b/planner/configexport/configexport.go index 685ad9e..b5e46a4 100644 --- a/planner/configexport/configexport.go +++ b/planner/configexport/configexport.go @@ -39,7 +39,7 @@ func (slf *ConfigExport) ExportClient(prefix, outputDir string) { if len(prefix) > 0 { config.Prefix = fmt.Sprintf("%s.", prefix) } - if err := file.WriterFile(filepath.Join(outputDir, fmt.Sprintf("%s.%s.json", prefix, config.Name)), config.JsonClient()); err != nil { + if err := file.WriterFile(filepath.Join(outputDir, fmt.Sprintf("%s%s.json", prefix, config.Name)), config.JsonClient()); err != nil { panic(err) } } @@ -51,7 +51,7 @@ func (slf *ConfigExport) ExportServer(prefix, outputDir string) { if len(prefix) > 0 { config.Prefix = fmt.Sprintf("%s.", prefix) } - if err := file.WriterFile(filepath.Join(outputDir, fmt.Sprintf("%s.%s.json", prefix, config.Name)), config.JsonServer()); err != nil { + if err := file.WriterFile(filepath.Join(outputDir, fmt.Sprintf("%s%s.json", prefix, config.Name)), config.JsonServer()); err != nil { panic(err) } } diff --git a/planner/configexport/example/config.go b/planner/configexport/example/config.go index d37ca0e..7af7e4e 100644 --- a/planner/configexport/example/config.go +++ b/planner/configexport/example/config.go @@ -9,29 +9,29 @@ import ( var json = jsonIter.ConfigCompatibleWithStandardLibrary var ( - GameIndexConfig map[int]map[string]*IndexConfig - gameIndexConfig map[int]map[string]*IndexConfig - GameEasyConfig *EasyConfig - gameEasyConfig *EasyConfig + IIndexConfig map[int]map[string]*IndexConfig + iIndexConfig map[int]map[string]*IndexConfig + IEasyConfig *EasyConfig + iEasyConfig *EasyConfig ) func LoadConfig(handle func(filename string, config any) error) { var err error - gameIndexConfig = make(map[int]map[string]*IndexConfig) - if err = handle("server.IndexConfig.json", &gameIndexConfig); err != nil { + iIndexConfig = make(map[int]map[string]*IndexConfig) + if err = handle("server.IndexConfig.json", &iIndexConfig); err != nil { log.Error("Config", zap.String("Name", "IndexConfig"), zap.Bool("Invalid", true), zap.Error(err)) } - gameEasyConfig = new(EasyConfig) - if err = handle("server.EasyConfig.json", gameEasyConfig); err != nil { + iEasyConfig = new(EasyConfig) + if err = handle("server.EasyConfig.json", iEasyConfig); err != nil { log.Error("Config", zap.String("Name", "EasyConfig"), zap.Bool("Invalid", true), zap.Error(err)) } } func Refresh() { - GameIndexConfig = gameIndexConfig - GameEasyConfig = gameEasyConfig + IIndexConfig = iIndexConfig + IEasyConfig = iEasyConfig } func DefaultLoad(filepath string) { diff --git a/planner/configexport/internal/template.go b/planner/configexport/internal/template.go index d5485af..8b1b748 100644 --- a/planner/configexport/internal/template.go +++ b/planner/configexport/internal/template.go @@ -37,21 +37,21 @@ var json = jsonIter.ConfigCompatibleWithStandardLibrary var ( {{range $index, $config := .Configs}} - Game{{$config.Name}} {{$config.GetVariable}} - game{{$config.Name}} {{$config.GetVariable}} + I{{$config.Name}} {{$config.GetVariable}} + i{{$config.Name}} {{$config.GetVariable}} {{end}} ) func LoadConfig(handle func(filename string, config any) error) { var err error {{range $index, $config := .Configs}} - game{{$config.Name}} = {{$config.GetVariableGen}} + i{{$config.Name}} = {{$config.GetVariableGen}} {{if eq $config.IndexCount 0}} - if err = handle("{{$config.Prefix}}{{$config.Name}}.json", game{{$config.Name}}); err != nil { + if err = handle("{{$config.Prefix}}{{$config.Name}}.json", i{{$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", &game{{$config.Name}}); err != nil { + if err = handle("{{$config.Prefix}}{{$config.Name}}.json", &i{{$config.Name}}); err != nil { log.Error("Config", zap.String("Name", "{{$config.Name}}"), zap.Bool("Invalid", true), zap.Error(err)) } {{end}} @@ -60,7 +60,7 @@ func LoadConfig(handle func(filename string, config any) error) { func Refresh() { {{range $index, $config := .Configs}} - Game{{$config.Name}} = game{{$config.Name}} + I{{$config.Name}} = i{{$config.Name}} {{end}} }