Files
complie-erlang/parser/zm_lib/public_tools.go
T
2025-09-30 01:48:54 +08:00

54 lines
1.3 KiB
Go

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
}