| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
- //
- // This Source Code Form is subject to the terms of the MIT License.
- // If a copy of the MIT was not distributed with this file,
- // You can obtain one at https://github.com/gogf/gf.
- package genctrl
- import (
- "fmt"
- "github.com/gogf/gf/cmd/gf/v2/internal/utility/mlog"
- "github.com/gogf/gf/v2/os/gfile"
- "github.com/gogf/gf/v2/text/gregex"
- "github.com/gogf/gf/v2/text/gstr"
- )
- type controllerClearer struct{}
- func newControllerClearer() *controllerClearer {
- return &controllerClearer{}
- }
- func (c *controllerClearer) Clear(dstModuleFolderPath string, extraApiItemsInCtrl []apiItem) (err error) {
- for _, item := range extraApiItemsInCtrl {
- if err = c.doClear(dstModuleFolderPath, item); err != nil {
- return err
- }
- }
- return
- }
- func (c *controllerClearer) doClear(dstModuleFolderPath string, item apiItem) (err error) {
- var (
- methodNameSnake = gstr.CaseSnake(item.MethodName)
- methodFilePath = gfile.Join(dstModuleFolderPath, fmt.Sprintf(
- `%s_%s_%s.go`, item.Module, item.Version, methodNameSnake,
- ))
- fileContent = gstr.Trim(gfile.GetContents(methodFilePath))
- )
- match, err := gregex.MatchString(`.+?Req.+?Res.+?{([\s\S]+?)}`, fileContent)
- if err != nil {
- return err
- }
- if len(match) > 1 {
- implements := gstr.Trim(match[1])
- // One line.
- if !gstr.Contains(implements, "\n") && gstr.Contains(implements, `CodeNotImplemented`) {
- mlog.Printf(
- `remove unimplemented and of no api definitions controller file: %s`,
- methodFilePath,
- )
- err = gfile.Remove(methodFilePath)
- }
- }
- return
- }
|