68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
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
|
|
}
|