package zm_lib import ( "errors" "fmt" "io" "os" "path/filepath" "strings" ) // GetPluginPathByWd 获取项目根目录 通过当前cmd 地址 func GetPluginPathByWd(pluginName string) (string, error) { currentDir, err := os.Getwd() if err != nil { return "", err } // 写入默认数据 pluginSpilt := strings.Split(currentDir, pluginName) if len(pluginSpilt) > 1 { pluginSpilt = pluginSpilt[:len(pluginSpilt)-1] return filepath.Join(strings.Join(pluginSpilt, pluginName), pluginName), nil } 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 }