Files
utility_go/cmd/make.go
2025-01-16 15:57:20 +08:00

78 lines
1.9 KiB
Go

package cmd
import (
"context"
"fmt"
"github.com/gogf/gf/v2/os/gcmd"
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/text/gstr"
"github.com/gogf/gf/v2/util/gconv"
)
var (
Make = gcmd.Command{
Name: "make",
Usage: "make",
Brief: "创建模块文件",
Arguments: []gcmd.Argument{
{Name: "model", Short: "m", Brief: "模块名"},
{Name: "id", Short: "i", Brief: "活动id"},
{Name: "name", Short: "n", Brief: "服务文件名"},
},
Examples: "make -m=act -id=1: 创建活动1的接口与服务文件 \n" +
"make -m=logic -n=test: 创建test的服务文件",
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
//g.Dump(parser.GetOptAll(), parser.GetArgAll())
//return
var model = parser.GetOpt("model").String()
//var name = parser.GetOpt("n").String()
this := cMake{}
switch model {
case "act":
var id = parser.GetOpt("id").Int()
if id == 0 {
return
}
err = this.Act(id)
case "logic":
var name = parser.GetOpt("name").String()
if name == "" {
return
}
err = this.Logic(name)
}
return
},
}
)
type cMake struct{}
func (c *cMake) Api() {
}
func (c *cMake) Act(id int) (err error) {
filePath := fmt.Sprintf("api/act/v1/act%v.go", id)
err = gfile.PutContents(filePath, "package v1\n")
filePath = fmt.Sprintf("internal/game/act/act%d/act%d.go", id, id)
fileStr := gfile.GetContents("internal/cmd/make/act")
fileStr = gstr.Replace(fileStr, "{id}", gconv.String(id))
err = gfile.PutContents(filePath, fileStr)
return
}
func (c *cMake) Logic(name string) (err error) {
var filePath = fmt.Sprintf("internal/logic/%s/%s.go", name, name)
fileStr := gfile.GetContents("internal/cmd/make/logic")
fileStr = gstr.Replace(fileStr, "{package}", name)
fileStr = gstr.Replace(fileStr, "{name}", gstr.CaseCamel(name))
err = gfile.PutContents(filePath, fileStr)
return
}