提交
This commit is contained in:
67
cool-tools/internal/service/module.go
Normal file
67
cool-tools/internal/service/module.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/os/gfile"
|
||||
"github.com/gogf/gf/v2/os/gres"
|
||||
"github.com/gogf/gf/v2/text/gstr"
|
||||
)
|
||||
|
||||
func CreatModule(ctx context.Context, moduleName string) (err error) {
|
||||
// 检测当前目录是否存在go.mod文件
|
||||
if !gfile.Exists("go.mod") {
|
||||
err = gerror.New("当前目录不存在go.mod文件,请在项目根目录下执行")
|
||||
return
|
||||
}
|
||||
module := ""
|
||||
// 读取go.mod文件第一行文本
|
||||
gfile.ReadLines("go.mod", func(text string) error {
|
||||
if gstr.Contains(text, "module") && module == "" {
|
||||
// println("module:", text)
|
||||
module = gstr.StrEx(text, "module")
|
||||
// println("module:", module)
|
||||
module = gstr.TrimAll(module)
|
||||
// println("module:", module)
|
||||
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if module == "" {
|
||||
err = gerror.New("go.mod文件中不存在module行")
|
||||
return
|
||||
}
|
||||
// println(module)
|
||||
// 创建模块目录
|
||||
moduleDir := gfile.Join(gfile.Pwd(), "modules", moduleName)
|
||||
if gfile.Exists(moduleDir) {
|
||||
err = gerror.New("模块已经存在,请先删除原有模块")
|
||||
return
|
||||
}
|
||||
err = gfile.Mkdir(moduleDir)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
// 创建模块目录结构
|
||||
err = gres.Export("cool-admin-go-simple/modules/demo", moduleDir, gres.ExportOption{
|
||||
RemovePrefix: "cool-admin-go-simple/modules/demo",
|
||||
})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
// 替换import路径
|
||||
err = gfile.ReplaceDir("cool-admin-go-simple/modules/demo", module+"/modules/"+moduleName, moduleDir, "*", true)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// 重命名demo.go 为 moduleName.go
|
||||
err = gfile.Rename(gfile.Join(moduleDir, "demo.go"), gfile.Join(moduleDir, moduleName+".go"))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
println("创建模块成功:", moduleDir)
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user