From ec151a029e9f70a43584ebbe6816a8a34d26c0d8 Mon Sep 17 00:00:00 2001 From: Skyenought Date: Sun, 19 May 2024 19:46:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E7=BB=87=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/hertz_migrate/internal/cli/cli.go | 253 ------------------ .../internal/cli/handleGofiles.go | 196 ++++++++++++++ cmd/hertz_migrate/internal/cli/preload.go | 23 +- cmd/hertz_migrate/internal/cli/run.go | 58 ++++ cmd/hertz_migrate/internal/cli/var.go | 18 ++ cmd/hertz_migrate/internal/errors.go | 9 +- cmd/hertz_migrate/internal/global.go | 2 + .../internal/logic/chi/packChiNewRouter.go | 4 +- .../internal/logic/gin/replaceBinding.go | 4 +- .../internal/logic/gin/replaceGinNew.go | 3 +- .../internal/logic/netHttp/packHandlerFunc.go | 1 - .../internal/logic/netHttp/replaceHttpOp.go | 4 +- .../logic/netHttp/replaceNetHttpHandler.go | 3 +- .../logic/netHttp/replaceReqOrRespOp.go | 3 +- .../logic/netHttp/replaceRequestOp.go | 4 +- cmd/hertz_migrate/internal/utils/cli.go | 14 +- cmd/hertz_migrate/internal/utils/new_utils.go | 6 - cmd/hertz_migrate/internal/utils/utils.go | 15 -- 18 files changed, 310 insertions(+), 310 deletions(-) create mode 100644 cmd/hertz_migrate/internal/cli/handleGofiles.go create mode 100644 cmd/hertz_migrate/internal/cli/run.go create mode 100644 cmd/hertz_migrate/internal/cli/var.go diff --git a/cmd/hertz_migrate/internal/cli/cli.go b/cmd/hertz_migrate/internal/cli/cli.go index ddad99a..8126aa1 100644 --- a/cmd/hertz_migrate/internal/cli/cli.go +++ b/cmd/hertz_migrate/internal/cli/cli.go @@ -15,46 +15,8 @@ package cli import ( - "bytes" - "go/ast" - "go/parser" - "go/printer" - "go/token" - "log" - "os" - "strings" - "sync" - - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic" - - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic/gin" - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logs" - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" - - mapset "github.com/deckarep/golang-set/v2" "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal" - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic/chi" - nethttp "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic/netHttp" - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/utils" "github.com/urfave/cli/v2" - - "golang.org/x/tools/go/ast/astutil" -) - -func init() { - globalMap = make(map[string]interface{}) -} - -var ( - globalArgs = &Args{} - globalMap map[string]any - fset *token.FileSet - wg sync.WaitGroup - - printerConfig = printer.Config{ - Mode: printer.UseSpaces, - Tabwidth: 4, - } ) type Args struct { @@ -126,218 +88,3 @@ func Init() *cli.App { app.Action = Run return app } - -func Run(c *cli.Context) error { - var ( - gofiles []string - goModDirs []string - err error - ) - - if gofiles, goModDirs, err = preload(c); err != nil { - return err - } - - for _, path := range gofiles { - file, err := parser.ParseFile(fset, path, nil, 0) - if err != nil { - logs.Debugf("Parse file fail, error: %v", err) - return internal.ErrParseFile - } - - // collect global information - astutil.Apply(file, func(c *astutil.Cursor) bool { - logic.GetHttpServerProps(c) - if globalArgs.UseGin { - gin.GetFuncNameHasGinCtx(c) - } - if globalArgs.UseNetHTTP { - nethttp.FindHandlerFuncName(c, internal.WebCtxSet) - } - return true - }, nil) - } - - if err = processFiles(gofiles); err != nil { - return err - } - - for _, dir := range goModDirs { - utils.RunGoImports(dir) - utils.RunGoModTidy(dir) - } - logs.Info("everything are ok!") - return nil -} - -func processFiles(gofiles []string) error { - for _, path := range gofiles { - var containsGin bool - - file, err := parser.ParseFile(fset, path, nil, parser.ParseComments) - if err != nil { - logs.Debugf("Parse file fail, error: %v", err) - return internal.ErrParseFile - } - - astutil.AddNamedImport(fset, file, "hzserver", globalArgs.HzRepo+"/pkg/app/server") - astutil.AddNamedImport(fset, file, "hzapp", globalArgs.HzRepo+"/pkg/app") - astutil.AddNamedImport(fset, file, "hzroute", globalArgs.HzRepo+"/pkg/route") - astutil.AddNamedImport(fset, file, "hzerrors", globalArgs.HzRepo+"/pkg/common/errors") - astutil.AddNamedImport(fset, file, "hzutils", globalArgs.HzRepo+"/pkg/common/utils") - - for _, importSpec := range file.Imports { - importStr := importSpec.Path.Value - - if globalArgs.UseGin { - if strings.Contains(importStr, `github.com/gin-gonic/gin`) { - containsGin = true - } - - if strings.Contains(importStr, `"github.com/gin-contrib/cors"`) { - importSpec.Path.Value = `"github.com/hertz-contrib/cors"` - containsGin = true - } - - if strings.Contains(importStr, `github.com/swaggo/gin-swagger`) { - importSpec.Path.Value = `"github.com/hertz-contrib/swagger"` - containsGin = true - } - } - } - - if !containsGin && globalArgs.UseGin { - continue - } - - astutil.Apply(file, func(c *astutil.Cursor) bool { - switch node := c.Node().(type) { - case *ast.StarExpr: - if globalArgs.UseChi { - if utils.CheckPtrPkgAndStructName(node, "chi", "Mux") { - c.Replace(types.StarServerHertz) - } - } - if globalArgs.UseGin { - if sel, ok := node.X.(*ast.SelectorExpr); ok { - if utils.CheckSelPkgAndStruct(sel, "gin", "Engine") { - c.Replace(types.StarServerHertz) - } - - if utils.CheckSelPkgAndStruct(sel, "gin", "RouterGroup") { - c.Replace(types.StarRouteGroup) - } - } - } - case *ast.FieldList: - if globalArgs.UseGin { - gin.ReplaceGinCtx(node) - } - case *ast.SelectorExpr: - if globalArgs.UseGin { - if utils.CheckSelPkgAndStruct(node, "route", "IRoutes") { - c.Replace(types.SelIRoutes) - } - } - } - if globalArgs.UseNetHTTP { - nethttp.GetOptionsFromHttpServer(c, globalMap) - nethttp.PackServerHertz(c, globalMap) - nethttp.ReplaceNetHttpHandler(c) - } - return true - }, nil) - - astutil.Apply(file, func(c *astutil.Cursor) bool { - netHttpGroup(c, internal.WebCtxSet) - - switch node := c.Node().(type) { - case *ast.SelectorExpr: - if globalArgs.UseNetHTTP { - if utils.CheckSelObj(node, "http", "ResponseWriter") { - switch node.Sel.Name { - case "WriteHeader": - c.Replace(types.SelSetStatusCode) - case "Write": - c.Replace(types.SelWrite) - case "Header": - c.Replace(types.SelRespHeader) - } - } - - if node.Sel.Name == "HandleFunc" { - node.Sel.Name = "Any" - } - nethttp.ReplaceRequestOp(node, c) - } - - if globalArgs.UseGin { - if utils.CheckSelPkgAndStruct(node, "gin", "HandlerFunc") { - c.Replace(types.SelAppHandlerFunc) - } - - if utils.CheckSelPkgAndStruct(node, "gin", "H") { - node.X.(*ast.Ident).Name = "hzutils" - } - - gin.ReplaceBinding(node, c) - gin.ReplaceRequestOp(node, c) - gin.ReplaceRespOp(node, c) - gin.ReplaceErrorType(node) - } - case *ast.CallExpr: - if globalArgs.UseChi { - chi.PackChiRouterMethod(node) - chi.PackChiNewRouter(node, c) - } - if globalArgs.UseNetHTTP { - nethttp.ReplaceHttpOp(node, c) - nethttp.ReplaceReqOrRespOp(node, c) - nethttp.ReplaceReqURLQuery(node) - if utils.CheckCallPkgAndMethodName(node, "http", "NotFound") { - c.Replace(types.CallNotFound) - } - } - - if globalArgs.UseGin { - gin.ReplaceGinNew(node, c) - gin.ReplaceGinRun(node) - gin.ReplaceGinCtxOp(node, c) - gin.ReplaceCallReqOrResp(node, c) - gin.ReplaceStatisFS(node) - } - } - if globalArgs.UseGin { - gin.ReplaceCtxParamList(c) - } - return true - }, nil) - - var buf bytes.Buffer - - if err = printerConfig.Fprint(&buf, fset, file); err != nil { - logs.Debugf("Fprint fail, error: %v", err) - return internal.ErrSaveChanges - } - - if err := os.WriteFile(path, buf.Bytes(), os.ModePerm); err == nil { - log.Println("File updated:", path) - } - } - return nil -} - -func netHttpGroup(c *astutil.Cursor, funcSet mapset.Set[string]) { - if globalArgs.UseNetHTTP { - nethttp.PackFprintf(c) - nethttp.ReplaceReqHeader(c) - nethttp.ReplaceReqHeaderOperation(c) - nethttp.ReplaceRespWrite(c) - nethttp.ReplaceReqFormGet(c) - nethttp.ReplaceReqFormValue(c) - nethttp.ReplaceReqMultipartForm(c) - nethttp.PackType2AppHandlerFunc(c) - nethttp.ReplaceReqMultipartFormOperation(c, globalMap) - nethttp.ReplaceFuncBodyHttpHandlerParam(c, funcSet) - } -} diff --git a/cmd/hertz_migrate/internal/cli/handleGofiles.go b/cmd/hertz_migrate/internal/cli/handleGofiles.go new file mode 100644 index 0000000..d7fa998 --- /dev/null +++ b/cmd/hertz_migrate/internal/cli/handleGofiles.go @@ -0,0 +1,196 @@ +package cli + +import ( + "bytes" + "go/ast" + "go/parser" + "log" + "os" + "strings" + + mapset "github.com/deckarep/golang-set/v2" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic/chi" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic/gin" + nethttp "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic/netHttp" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logs" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/utils" + + "golang.org/x/tools/go/ast/astutil" +) + +// TODO:将 use-XXX 拆分为具体函数 +func handleGoFiles(filepaths []string) error { + for _, path := range filepaths { + var containsGin bool + + file, err := parser.ParseFile(fset, path, nil, parser.ParseComments) + if err != nil { + logs.Debugf("Parse file fail, error: %v", err) + return internal.ErrParseFile + } + + astutil.AddNamedImport(fset, file, "hzserver", globalArgs.HzRepo+"/pkg/app/server") + astutil.AddNamedImport(fset, file, "hzapp", globalArgs.HzRepo+"/pkg/app") + astutil.AddNamedImport(fset, file, "hzroute", globalArgs.HzRepo+"/pkg/route") + astutil.AddNamedImport(fset, file, "hzerrors", globalArgs.HzRepo+"/pkg/common/errors") + astutil.AddNamedImport(fset, file, "hzutils", globalArgs.HzRepo+"/pkg/common/utils") + + for _, importSpec := range file.Imports { + importStr := importSpec.Path.Value + + if globalArgs.UseGin { + if strings.Contains(importStr, `github.com/gin-gonic/gin`) { + containsGin = true + } + + if strings.Contains(importStr, `"github.com/gin-contrib/cors"`) { + importSpec.Path.Value = `"github.com/hertz-contrib/cors"` + containsGin = true + } + + if strings.Contains(importStr, `github.com/swaggo/gin-swagger`) { + importSpec.Path.Value = `"github.com/hertz-contrib/swagger"` + containsGin = true + } + } + } + + if !containsGin && globalArgs.UseGin { + continue + } + + astutil.Apply(file, func(cursor *astutil.Cursor) bool { + if globalArgs.UseGin { + switch node := cursor.Node().(type) { + case *ast.StarExpr: + if sel, ok := node.X.(*ast.SelectorExpr); ok { + if utils.CheckSelPkgAndStruct(sel, "gin", "Engine") { + cursor.Replace(types.StarServerHertz) + } + + if utils.CheckSelPkgAndStruct(sel, "gin", "RouterGroup") { + cursor.Replace(types.StarRouteGroup) + } + } + case *ast.FieldList: + gin.ReplaceGinCtx(node) + case *ast.SelectorExpr: + if utils.CheckSelPkgAndStruct(node, "route", "IRoutes") { + cursor.Replace(types.SelIRoutes) + } + } + } + + switch node := cursor.Node().(type) { + case *ast.StarExpr: + if globalArgs.UseChi { + if utils.CheckPtrPkgAndStructName(node, "chi", "Mux") { + cursor.Replace(types.StarServerHertz) + } + } + } + + if globalArgs.UseNetHTTP { + nethttp.GetOptionsFromHttpServer(cursor, internal.GlobalHashMap) + nethttp.PackServerHertz(cursor, internal.GlobalHashMap) + nethttp.ReplaceNetHttpHandler(cursor) + } + + return true + }, nil) + + astutil.Apply(file, func(c *astutil.Cursor) bool { + netHttpGroup(c, internal.WebCtxSet) + + switch node := c.Node().(type) { + case *ast.SelectorExpr: + if globalArgs.UseNetHTTP { + if utils.CheckSelObj(node, "http", "ResponseWriter") { + switch node.Sel.Name { + case "WriteHeader": + c.Replace(types.SelSetStatusCode) + case "Write": + c.Replace(types.SelWrite) + case "Header": + c.Replace(types.SelRespHeader) + } + } + + if node.Sel.Name == "HandleFunc" { + node.Sel.Name = "Any" + } + nethttp.ReplaceRequestOp(node, c) + } + + if globalArgs.UseGin { + if utils.CheckSelPkgAndStruct(node, "gin", "HandlerFunc") { + c.Replace(types.SelAppHandlerFunc) + } + + if utils.CheckSelPkgAndStruct(node, "gin", "H") { + node.X.(*ast.Ident).Name = "hzutils" + } + + gin.ReplaceBinding(node, c) + gin.ReplaceRequestOp(node, c) + gin.ReplaceRespOp(node, c) + gin.ReplaceErrorType(node) + } + case *ast.CallExpr: + if globalArgs.UseChi { + chi.PackChiRouterMethod(node) + chi.PackChiNewRouter(node, c) + } + if globalArgs.UseNetHTTP { + nethttp.ReplaceHttpOp(node, c) + nethttp.ReplaceReqOrRespOp(node, c) + nethttp.ReplaceReqURLQuery(node) + if utils.CheckCallPkgAndMethodName(node, "http", "NotFound") { + c.Replace(types.CallNotFound) + } + } + + if globalArgs.UseGin { + gin.ReplaceGinNew(node, c) + gin.ReplaceGinRun(node) + gin.ReplaceGinCtxOp(node, c) + gin.ReplaceCallReqOrResp(node, c) + gin.ReplaceStatisFS(node) + } + } + if globalArgs.UseGin { + gin.ReplaceCtxParamList(c) + } + return true + }, nil) + + var buf bytes.Buffer + + if err = printerConfig.Fprint(&buf, fset, file); err != nil { + logs.Debugf("Fprint fail, error: %v", err) + return internal.ErrSaveChanges + } + + if err := os.WriteFile(path, buf.Bytes(), os.ModePerm); err == nil { + log.Println("File updated:", path) + } + } + return nil +} + +func netHttpGroup(c *astutil.Cursor, funcSet mapset.Set[string]) { + if globalArgs.UseNetHTTP { + nethttp.PackFprintf(c) + nethttp.ReplaceReqHeader(c) + nethttp.ReplaceReqHeaderOperation(c) + nethttp.ReplaceRespWrite(c) + nethttp.ReplaceReqFormGet(c) + nethttp.ReplaceReqFormValue(c) + nethttp.ReplaceReqMultipartForm(c) + nethttp.PackType2AppHandlerFunc(c) + nethttp.ReplaceReqMultipartFormOperation(c, internal.GlobalHashMap) + nethttp.ReplaceFuncBodyHttpHandlerParam(c, funcSet) + } +} diff --git a/cmd/hertz_migrate/internal/cli/preload.go b/cmd/hertz_migrate/internal/cli/preload.go index bdefa0a..4324381 100644 --- a/cmd/hertz_migrate/internal/cli/preload.go +++ b/cmd/hertz_migrate/internal/cli/preload.go @@ -1,17 +1,15 @@ package cli import ( + "go/token" + "os" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logs" "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/utils" "github.com/urfave/cli/v2" - "go/token" ) -func preload(ctx *cli.Context) (files []string, gomods []string, err error) { - var ( - gofiles []string - goModDirs []string - ) +func preload(ctx *cli.Context) (files, gomodDirs []string, err error) { fset = token.NewFileSet() globalArgs.IgnoreDirs = ctx.StringSlice("ignore-dirs") @@ -24,25 +22,28 @@ func preload(ctx *cli.Context) (files []string, gomods []string, err error) { } if globalArgs.TargetDir != "" { - gofiles, err = utils.CollectGoFiles(globalArgs.TargetDir, globalArgs.IgnoreDirs) + files, err = utils.CollectGoFiles(globalArgs.TargetDir, globalArgs.IgnoreDirs) if err != nil { return } - gomods, err = utils.SearchAllDirHasGoMod(globalArgs.TargetDir) + gomodDirs, err = utils.SearchAllDirHasGoMod(globalArgs.TargetDir) if err != nil { return } - for _, dir := range goModDirs { + for _, dir := range gomodDirs { wg.Add(1) dir := dir go func() { defer wg.Done() - utils.RunGoGet(dir, globalArgs.HzRepo) + if err := utils.RunGoGet(dir, globalArgs.HzRepo); err != nil { + logs.Errorf("go get hertz fail, %v", err) + os.Exit(1) + } }() } wg.Wait() } - return gofiles, gomods, err + return files, gomodDirs, err } diff --git a/cmd/hertz_migrate/internal/cli/run.go b/cmd/hertz_migrate/internal/cli/run.go new file mode 100644 index 0000000..366096a --- /dev/null +++ b/cmd/hertz_migrate/internal/cli/run.go @@ -0,0 +1,58 @@ +package cli + +import ( + "go/parser" + + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic/gin" + nethttp "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logic/netHttp" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logs" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/utils" + "github.com/urfave/cli/v2" + + "golang.org/x/tools/go/ast/astutil" +) + +func Run(c *cli.Context) error { + var ( + gofiles []string + goModDirs []string + err error + ) + + if gofiles, goModDirs, err = preload(c); err != nil { + return err + } + + for _, path := range gofiles { + file, err := parser.ParseFile(fset, path, nil, 0) + if err != nil { + logs.Debugf("Parse file fail, error: %v", err) + return internal.ErrParseFile + } + + // collect global information + astutil.Apply(file, func(c *astutil.Cursor) bool { + logic.GetHttpServerProps(c) + if globalArgs.UseGin { + gin.GetFuncNameHasGinCtx(c) + } + if globalArgs.UseNetHTTP { + nethttp.FindHandlerFuncName(c, internal.WebCtxSet) + } + return true + }, nil) + } + + if err = handleGoFiles(gofiles); err != nil { + return err + } + + for _, dir := range goModDirs { + utils.RunGoImports(dir) + utils.RunGoModTidy(dir) + } + logs.Info("everything are ok!") + return nil +} diff --git a/cmd/hertz_migrate/internal/cli/var.go b/cmd/hertz_migrate/internal/cli/var.go new file mode 100644 index 0000000..ceee76a --- /dev/null +++ b/cmd/hertz_migrate/internal/cli/var.go @@ -0,0 +1,18 @@ +package cli + +import ( + "go/printer" + "go/token" + "sync" +) + +var ( + globalArgs = &Args{} + fset *token.FileSet + wg sync.WaitGroup + + printerConfig = printer.Config{ + Mode: printer.UseSpaces, + Tabwidth: 4, + } +) diff --git a/cmd/hertz_migrate/internal/errors.go b/cmd/hertz_migrate/internal/errors.go index 5daaa3d..56fbd41 100644 --- a/cmd/hertz_migrate/internal/errors.go +++ b/cmd/hertz_migrate/internal/errors.go @@ -17,11 +17,6 @@ package internal import "errors" var ( - ErrCollectGoFiles = errors.New("collect go files error") - ErrSearchGoMod = errors.New("search go.mod dir fail") - ErrParseFile = errors.New("parse go file fail") - ErrSaveChanges = errors.New("change go file fail") - ErrGetAbsPath = errors.New("get absolute path fail") - ErrRunCommand = errors.New("run command fail") - ErrChangeDir = errors.New("change directory fail") + ErrParseFile = errors.New("parse go file fail") + ErrSaveChanges = errors.New("change go file fail") ) diff --git a/cmd/hertz_migrate/internal/global.go b/cmd/hertz_migrate/internal/global.go index d510b44..0f5dd3a 100644 --- a/cmd/hertz_migrate/internal/global.go +++ b/cmd/hertz_migrate/internal/global.go @@ -23,6 +23,7 @@ import ( var ( CtxSet mapset.Set[string] WebCtxSet mapset.Set[string] + GlobalHashMap map[string]any HertzConfigOptions []ast.Expr ServerName string ServerPort ast.Expr @@ -31,4 +32,5 @@ var ( func init() { CtxSet = mapset.NewSet[string]() WebCtxSet = mapset.NewSet[string]() + GlobalHashMap = make(map[string]any) } diff --git a/cmd/hertz_migrate/internal/logic/chi/packChiNewRouter.go b/cmd/hertz_migrate/internal/logic/chi/packChiNewRouter.go index 2f36649..db6f397 100644 --- a/cmd/hertz_migrate/internal/logic/chi/packChiNewRouter.go +++ b/cmd/hertz_migrate/internal/logic/chi/packChiNewRouter.go @@ -15,9 +15,10 @@ package chi import ( - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal" . "go/ast" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal" + "golang.org/x/tools/go/ast/astutil" ) @@ -38,5 +39,4 @@ func PackChiNewRouter(callExpr *CallExpr, cur *astutil.Cursor) { } callExpr.Args = internal.HertzConfigOptions } - } diff --git a/cmd/hertz_migrate/internal/logic/gin/replaceBinding.go b/cmd/hertz_migrate/internal/logic/gin/replaceBinding.go index bf16a42..5fed334 100644 --- a/cmd/hertz_migrate/internal/logic/gin/replaceBinding.go +++ b/cmd/hertz_migrate/internal/logic/gin/replaceBinding.go @@ -15,9 +15,11 @@ package gin import ( + "go/ast" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/utils" - "go/ast" + "golang.org/x/tools/go/ast/astutil" ) diff --git a/cmd/hertz_migrate/internal/logic/gin/replaceGinNew.go b/cmd/hertz_migrate/internal/logic/gin/replaceGinNew.go index 50452eb..aec70bf 100644 --- a/cmd/hertz_migrate/internal/logic/gin/replaceGinNew.go +++ b/cmd/hertz_migrate/internal/logic/gin/replaceGinNew.go @@ -15,9 +15,10 @@ package gin import ( - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" . "go/ast" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal" "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/utils" diff --git a/cmd/hertz_migrate/internal/logic/netHttp/packHandlerFunc.go b/cmd/hertz_migrate/internal/logic/netHttp/packHandlerFunc.go index b6fe0cb..674d8eb 100644 --- a/cmd/hertz_migrate/internal/logic/netHttp/packHandlerFunc.go +++ b/cmd/hertz_migrate/internal/logic/netHttp/packHandlerFunc.go @@ -25,6 +25,5 @@ func PackHandleFunc(cur *astutil.Cursor) { if selExpr.Sel == nil { return } - } } diff --git a/cmd/hertz_migrate/internal/logic/netHttp/replaceHttpOp.go b/cmd/hertz_migrate/internal/logic/netHttp/replaceHttpOp.go index 062f579..b2a3cc7 100644 --- a/cmd/hertz_migrate/internal/logic/netHttp/replaceHttpOp.go +++ b/cmd/hertz_migrate/internal/logic/netHttp/replaceHttpOp.go @@ -1,9 +1,11 @@ package netHttp import ( - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" . "go/ast" "go/token" + + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" + "golang.org/x/tools/go/ast/astutil" ) diff --git a/cmd/hertz_migrate/internal/logic/netHttp/replaceNetHttpHandler.go b/cmd/hertz_migrate/internal/logic/netHttp/replaceNetHttpHandler.go index 5a5600f..fc82475 100644 --- a/cmd/hertz_migrate/internal/logic/netHttp/replaceNetHttpHandler.go +++ b/cmd/hertz_migrate/internal/logic/netHttp/replaceNetHttpHandler.go @@ -15,9 +15,10 @@ package netHttp import ( - mapset "github.com/deckarep/golang-set/v2" . "go/ast" + mapset "github.com/deckarep/golang-set/v2" + "golang.org/x/tools/go/ast/astutil" ) diff --git a/cmd/hertz_migrate/internal/logic/netHttp/replaceReqOrRespOp.go b/cmd/hertz_migrate/internal/logic/netHttp/replaceReqOrRespOp.go index ec81545..8da0f11 100644 --- a/cmd/hertz_migrate/internal/logic/netHttp/replaceReqOrRespOp.go +++ b/cmd/hertz_migrate/internal/logic/netHttp/replaceReqOrRespOp.go @@ -1,9 +1,10 @@ package netHttp import ( - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" . "go/ast" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/utils" "golang.org/x/tools/go/ast/astutil" ) diff --git a/cmd/hertz_migrate/internal/logic/netHttp/replaceRequestOp.go b/cmd/hertz_migrate/internal/logic/netHttp/replaceRequestOp.go index 2483c25..cdaca7c 100644 --- a/cmd/hertz_migrate/internal/logic/netHttp/replaceRequestOp.go +++ b/cmd/hertz_migrate/internal/logic/netHttp/replaceRequestOp.go @@ -1,9 +1,11 @@ package netHttp import ( + . "go/ast" + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/types" "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/utils" - . "go/ast" + "golang.org/x/tools/go/ast/astutil" ) diff --git a/cmd/hertz_migrate/internal/utils/cli.go b/cmd/hertz_migrate/internal/utils/cli.go index f104ec4..50a23c1 100644 --- a/cmd/hertz_migrate/internal/utils/cli.go +++ b/cmd/hertz_migrate/internal/utils/cli.go @@ -16,11 +16,12 @@ package utils import ( "fmt" - "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logs" "log" "os" "os/exec" "path/filepath" + + "github.com/hertz-contrib/migrate/cmd/hertz_migrate/internal/logs" ) func RunGoImports(path string) { @@ -40,21 +41,16 @@ func RunGoImports(path string) { } } -func RunGoGet(path, repo string) { +func RunGoGet(path, repo string) error { err := os.Chdir(path) if err != nil { - fmt.Println("Error changing directory:", err) - return + return err } var cmd *exec.Cmd cmd = exec.Command("go", "get", repo) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr - err = cmd.Run() - if err != nil { - fmt.Println("Error running command:", err) - return - } + return cmd.Run() } func RunGoModTidy(path string) { diff --git a/cmd/hertz_migrate/internal/utils/new_utils.go b/cmd/hertz_migrate/internal/utils/new_utils.go index b68d9d6..071d796 100644 --- a/cmd/hertz_migrate/internal/utils/new_utils.go +++ b/cmd/hertz_migrate/internal/utils/new_utils.go @@ -99,12 +99,6 @@ func CheckObjStarExpr(obj *Object, pkg, name string) bool { return CheckFuncDeclReturnOne(i.Obj.Decl.(*FuncDecl), pkg, name) } } - - //if se, ok := call.Fun.(*SelectorExpr); ok { - // if i, ok := se.X.(*Ident); ok { - // return CheckObjStarExpr(i.Obj, pkg, name) - // } - //} } } return false diff --git a/cmd/hertz_migrate/internal/utils/utils.go b/cmd/hertz_migrate/internal/utils/utils.go index 15ca1be..3410034 100644 --- a/cmd/hertz_migrate/internal/utils/utils.go +++ b/cmd/hertz_migrate/internal/utils/utils.go @@ -83,21 +83,6 @@ func CheckProp(ident *Ident, name string) bool { return false } -func CheckStructName(selExpr *SelectorExpr, name string) bool { - if ident, ok := selExpr.X.(*Ident); ok { - if field, ok := ident.Obj.Decl.(*Field); ok { - selExpr, ok := field.Type.(*SelectorExpr) - if !ok { - return false - } - if selExpr.Sel.Name == name { - return true - } - } - } - return false -} - func ReplaceParamsInStr(s string) string { re := regexp.MustCompile(`\{([^}]+)\}`) resultString := re.ReplaceAllString(s, ":$1")