54 lines
1.3 KiB
Go
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
|
|
}
|