From bff7f73d8b7ce169b983326572ed91e2131bfdbd Mon Sep 17 00:00:00 2001 From: Kaxi <1042864399@qq.com> Date: Tue, 30 Sep 2025 01:48:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/pb2port.go | 9 +++++---- cmd/single_dir.go | 26 +++++++++++++++----------- parser/zm_lib/com_test.go | 24 ++++++++++++++++++++++++ parser/zm_lib/public_tools.go | 29 +++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+), 15 deletions(-) create mode 100644 parser/zm_lib/com_test.go diff --git a/cmd/pb2port.go b/cmd/pb2port.go index 3db2218..f50a4dc 100644 --- a/cmd/pb2port.go +++ b/cmd/pb2port.go @@ -2,6 +2,7 @@ package cmd import ( "complie-erlang/config" + "complie-erlang/parser/zm_lib" "complie-erlang/worker" "fmt" "github.com/spf13/cobra" @@ -66,9 +67,9 @@ func (s *Pb2Port) run(_ *cobra.Command, arg []string) { } if s.debug { - for key, arg1 := range args { - fmt.Println(key, "-->", arg1) - } + fmt.Println("参数打印: ") + _ = zm_lib.PrintArgsMap(args) + fmt.Println("") } _, err = os.Stat(s.out) @@ -82,7 +83,7 @@ func (s *Pb2Port) run(_ *cobra.Command, arg []string) { } if s.debug { - fmt.Println("template:", template) + fmt.Println("模板输出:\n", template) return } diff --git a/cmd/single_dir.go b/cmd/single_dir.go index 5db0f7b..d1ab085 100644 --- a/cmd/single_dir.go +++ b/cmd/single_dir.go @@ -4,7 +4,6 @@ import ( "complie-erlang/config" tm "complie-erlang/template" "complie-erlang/worker" - "fmt" "gopkg.in/yaml.v2" "log" "os" @@ -22,31 +21,31 @@ func ExecuteSingleDir(args []string) { xmlPath, err := worker1.FindConfigXMLPath(cfgFileName) if err != nil { - fmt.Printf("Err 获取可执行文件路径失败: %v", err) + log.Printf("[error] 获取可执行文件路径失败: %v", err) return } bytes, err := os.ReadFile(xmlPath) if err != nil { - fmt.Printf("Err 读取配置文件失败: %v", err) + log.Printf("[error] 读取配置文件失败: %v", err) return } if err = yaml.Unmarshal(bytes, cfg); err != nil { - fmt.Printf("Err 解析配置文件 %s 失败: %v", xmlPath, err) + log.Printf("[error] 解析配置文件 %s 失败: %v", xmlPath, err) return } // 获取可执行文件所在目录 exePath, err := os.Executable() if err != nil { - log.Fatalf("获取可执行文件路径失败: %v", err) + log.Printf("[error] 获取可执行文件路径失败: %v", err) return } // 加载模版报错 if err := templates.ParseGlob(filepath.Join(filepath.Dir(exePath), cfg.TemplateDirPattern)); err != nil { - log.Fatalf("Err 加载模版报错: %v", err) + log.Printf("[error] 加载模版报错: %v", err) return } @@ -54,26 +53,27 @@ func ExecuteSingleDir(args []string) { // 查询目标文件 erlFiles, err := worker1.FindPatternErlFiles(cfgPublic.Filename) if err != nil { - log.Fatalf("Err FindPatternErlFiles: %v", err) + log.Printf("[error] FindPatternErlFiles: %v", err) return } if len(erlFiles) == 0 { - log.Printf("Info 未检索到文件: %v", cfgPublic.Filename) + // log.Printf("[info] 未检索到文件: %v", cfgPublic.Filename) continue } for _, filename := range erlFiles { + log.Printf("[info] 检索到文件: %v %s\n", cfgPublic.Filename, filename) // 根据配置解析出 文件数据 parseTemKey, err := worker1.ParseTemKey(filename, cfgPublic) if err != nil { - log.Fatalf("loading templates: %v", err) + log.Printf("[error] loading templates: %v", err) return } // 输出文件夹 outDir, err := worker1.FindPluginCfgFiles(cfgPublic.OutputSep, cfgPublic.OutDirName, filename) if err != nil { - log.Fatalf("Err 查找输出文件夹: %v", err) + log.Printf("[error] 查找输出文件夹: %v", err) return } @@ -85,7 +85,11 @@ func ExecuteSingleDir(args []string) { } err = os.WriteFile(outFileNema, []byte(strings.Join(parseTemKey, "\n\n")), os.ModePerm) - fmt.Println(err) + if err != nil { + log.Printf("[warn] 生成文件失败: %v %s", err, outFileNema) + continue + } + log.Printf("[info] 生成文件: %s\n", outFileNema) } } diff --git a/parser/zm_lib/com_test.go b/parser/zm_lib/com_test.go new file mode 100644 index 0000000..2ee822e --- /dev/null +++ b/parser/zm_lib/com_test.go @@ -0,0 +1,24 @@ +package zm_lib + +import ( + "fmt" + "testing" +) + +func TestP1(t *testing.T) { + + fmt.Println("TestP1") + err := PrintArgsMap(map[string]any{ + "id": []string{"1", "2", "3"}, + "name": "苏通", + "data": map[string]any{ + "layer": "2", + "haha": "3", + "child": map[string]any{ + "layer": "2", + "haha": "3", + }, + }, + }) + fmt.Printf("%v\n", err) +} diff --git a/parser/zm_lib/public_tools.go b/parser/zm_lib/public_tools.go index dfe7fc9..e313fc7 100644 --- a/parser/zm_lib/public_tools.go +++ b/parser/zm_lib/public_tools.go @@ -2,6 +2,8 @@ package zm_lib import ( "errors" + "fmt" + "io" "os" "path/filepath" "strings" @@ -22,3 +24,30 @@ func GetPluginPathByWd(pluginName string) (string, error) { } return "", errors.New("no find plugin") } + +func PrintArgsMap(argsMap map[string]any) error { + return FprintfArgsMap(1, os.Stdout, argsMap) +} + +func FprintfArgsMap(layer int, out io.Writer, argsMap map[string]any) error { + for key, arg := range argsMap { + switch value := arg.(type) { + case map[string]any: + if _, err := fmt.Fprintf(out, "%s%s: \n", strings.Repeat("- ", layer), key); err != nil { + return err + } + if err := FprintfArgsMap(layer+1, out, value); err != nil { + return err + } + case []string: + if _, err := fmt.Fprintf(out, "%s%s: [%v]\n", strings.Repeat("- ", layer), key, strings.Join(value, ",")); err != nil { + return err + } + default: + if _, err := fmt.Fprintf(out, "%s%s: %v\n", strings.Repeat("- ", layer), key, value); err != nil { + return err + } + } + } + return nil +}