Files
bl/cool-tools/internal/service/module.go

68 lines
1.7 KiB
Go
Raw Normal View History

2025-06-20 17:13:51 +08:00
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
}