From 657dc7c3a69e3c104c1a31db835b37ad34befdbd Mon Sep 17 00:00:00 2001 From: des <18638715007@163.com> Date: Wed, 25 Feb 2026 20:10:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- srv/cmd/tool/cfg.go | 6 +++++ srv/cmd/tool/lab/bluePrint.go | 3 --- srv/cmd/tool/lab/main.go | 3 +++ srv/cmd/tool/main.go | 47 ++++++++++++++++++++++++++++++++++- 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 srv/cmd/tool/cfg.go create mode 100644 srv/cmd/tool/lab/main.go diff --git a/srv/cmd/tool/cfg.go b/srv/cmd/tool/cfg.go new file mode 100644 index 0000000..baa67dc --- /dev/null +++ b/srv/cmd/tool/cfg.go @@ -0,0 +1,6 @@ +package tool + +func Karmaforge[T any](params ...any) *T { + var result T + return &result +} diff --git a/srv/cmd/tool/lab/bluePrint.go b/srv/cmd/tool/lab/bluePrint.go index 7fcd33c..1fde001 100644 --- a/srv/cmd/tool/lab/bluePrint.go +++ b/srv/cmd/tool/lab/bluePrint.go @@ -1,4 +1 @@ package lab - -func main() { -} diff --git a/srv/cmd/tool/lab/main.go b/srv/cmd/tool/lab/main.go new file mode 100644 index 0000000..44a96af --- /dev/null +++ b/srv/cmd/tool/lab/main.go @@ -0,0 +1,3 @@ +package lab + +func main() {} diff --git a/srv/cmd/tool/main.go b/srv/cmd/tool/main.go index 06ab7d0..2eb9d50 100644 --- a/srv/cmd/tool/main.go +++ b/srv/cmd/tool/main.go @@ -1 +1,46 @@ -package main +package tool + +import ( + "fmt" + "os" + "path/filepath" + "strings" + + "golang.org/x/tools/go/packages" +) + +func main() { + pwd, err := os.Getwd() + if err != nil { + fmt.Println("无法获取当前工作目录") + panic(err) + } + sep := string(filepath.Separator) + s := strings.Split(pwd, sep) + var project string + for i := len(s); i > 0; i-- { + base := strings.Join(s[:i], sep) + module := filepath.Join(base, "go.mod") + _, err := os.Stat(module) + if err == nil { + project = module + break + } + } + if project == "" { + panic("没有找到 go.mod ,请检查是否在 module 中调用程序") + } + project = filepath.Dir(project) + fmt.Println("当前寻根目录 " + project) + pkgs, err := packages.Load(&packages.Config{ + Mode: packages.NeedName | packages.NeedTypes | packages.NeedTypesInfo | packages.NeedSyntax | packages.NeedDeps, + Tests: false, + }, filepath.Join(project, "...")) + if err != nil { + fmt.Println("解析项目失败") + panic(err) + } + for _, pkg := range pkgs { + fmt.Println(pkg.Name) + } +}