mirror of
https://github.com/beego/bee.git
synced 2024-11-21 18:40:54 +00:00
Bee fix command
This commit is contained in:
parent
e0fd237002
commit
29e5fadf6a
@ -1,6 +1,6 @@
|
||||
language: go
|
||||
go:
|
||||
- 1.12.17
|
||||
- 1.14.6
|
||||
install:
|
||||
- export PATH=$PATH:$HOME/gopath/bin
|
||||
- go get -u github.com/opennota/check/cmd/structcheck
|
||||
|
@ -1,232 +1,48 @@
|
||||
package beefix
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/beego/bee/cmd/commands"
|
||||
"github.com/beego/bee/cmd/commands/version"
|
||||
beeLogger "github.com/beego/bee/logger"
|
||||
"github.com/beego/bee/logger/colors"
|
||||
"github.com/beego/bee/utils"
|
||||
)
|
||||
|
||||
var CmdFix = &commands.Command{
|
||||
UsageLine: "fix",
|
||||
Short: "Fixes your application by making it compatible with newer versions of Beego",
|
||||
Long: `As of {{"Beego 1.6"|bold}}, there are some backward compatibility issues.
|
||||
|
||||
Long: `
|
||||
The command 'fix' will try to solve those issues by upgrading your code base
|
||||
to be compatible with Beego version 1.6+.
|
||||
to be compatible with Beego old version
|
||||
-s source version
|
||||
-t target version
|
||||
|
||||
example: bee fix -s 1 -t 2 means that upgrade Beego version from v1.x to v2.x
|
||||
`,
|
||||
}
|
||||
|
||||
var (
|
||||
source, target utils.DocValue
|
||||
)
|
||||
|
||||
func init() {
|
||||
CmdFix.Run = runFix
|
||||
CmdFix.PreRun = func(cmd *commands.Command, args []string) { version.ShowShortVersionBanner() }
|
||||
CmdFix.Flag.Var(&source, "s", "source version")
|
||||
CmdFix.Flag.Var(&target, "t", "target version")
|
||||
commands.AvailableCommands = append(commands.AvailableCommands, CmdFix)
|
||||
}
|
||||
|
||||
func runFix(cmd *commands.Command, args []string) int {
|
||||
output := cmd.Out()
|
||||
|
||||
beeLogger.Log.Info("Upgrading the application...")
|
||||
|
||||
dir, err := os.Getwd()
|
||||
if err != nil {
|
||||
beeLogger.Log.Fatalf("Error while getting the current working directory: %s", err)
|
||||
t := target.String()
|
||||
if t == "" || t == "1.6"{
|
||||
return fixTo16(cmd, args)
|
||||
} else if strings.HasPrefix(t, "2") {
|
||||
// upgrade to v2
|
||||
return fix1To2()
|
||||
}
|
||||
|
||||
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
|
||||
if info.IsDir() {
|
||||
if strings.HasPrefix(info.Name(), ".") {
|
||||
return filepath.SkipDir
|
||||
}
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if strings.HasSuffix(info.Name(), ".exe") {
|
||||
return nil
|
||||
}
|
||||
err = fixFile(path)
|
||||
fmt.Fprintf(output, colors.GreenBold("\tfix\t")+"%s\n", path)
|
||||
if err != nil {
|
||||
beeLogger.Log.Errorf("Could not fix file: %s", err)
|
||||
}
|
||||
return err
|
||||
})
|
||||
beeLogger.Log.Success("Upgrade Done!")
|
||||
beeLogger.Log.Info("The target is compatible version, do nothing")
|
||||
return 0
|
||||
}
|
||||
|
||||
var rules = []string{
|
||||
"beego.AppName", "beego.BConfig.AppName",
|
||||
"beego.RunMode", "beego.BConfig.RunMode",
|
||||
"beego.RecoverPanic", "beego.BConfig.RecoverPanic",
|
||||
"beego.RouterCaseSensitive", "beego.BConfig.RouterCaseSensitive",
|
||||
"beego.BeegoServerName", "beego.BConfig.ServerName",
|
||||
"beego.EnableGzip", "beego.BConfig.EnableGzip",
|
||||
"beego.ErrorsShow", "beego.BConfig.EnableErrorsShow",
|
||||
"beego.CopyRequestBody", "beego.BConfig.CopyRequestBody",
|
||||
"beego.MaxMemory", "beego.BConfig.MaxMemory",
|
||||
"beego.Graceful", "beego.BConfig.Listen.Graceful",
|
||||
"beego.HttpAddr", "beego.BConfig.Listen.HTTPAddr",
|
||||
"beego.HttpPort", "beego.BConfig.Listen.HTTPPort",
|
||||
"beego.ListenTCP4", "beego.BConfig.Listen.ListenTCP4",
|
||||
"beego.EnableHttpListen", "beego.BConfig.Listen.EnableHTTP",
|
||||
"beego.EnableHttpTLS", "beego.BConfig.Listen.EnableHTTPS",
|
||||
"beego.HttpsAddr", "beego.BConfig.Listen.HTTPSAddr",
|
||||
"beego.HttpsPort", "beego.BConfig.Listen.HTTPSPort",
|
||||
"beego.HttpCertFile", "beego.BConfig.Listen.HTTPSCertFile",
|
||||
"beego.HttpKeyFile", "beego.BConfig.Listen.HTTPSKeyFile",
|
||||
"beego.EnableAdmin", "beego.BConfig.Listen.EnableAdmin",
|
||||
"beego.AdminHttpAddr", "beego.BConfig.Listen.AdminAddr",
|
||||
"beego.AdminHttpPort", "beego.BConfig.Listen.AdminPort",
|
||||
"beego.UseFcgi", "beego.BConfig.Listen.EnableFcgi",
|
||||
"beego.HttpServerTimeOut", "beego.BConfig.Listen.ServerTimeOut",
|
||||
"beego.AutoRender", "beego.BConfig.WebConfig.AutoRender",
|
||||
"beego.ViewsPath", "beego.BConfig.WebConfig.ViewsPath",
|
||||
"beego.StaticDir", "beego.BConfig.WebConfig.StaticDir",
|
||||
"beego.StaticExtensionsToGzip", "beego.BConfig.WebConfig.StaticExtensionsToGzip",
|
||||
"beego.DirectoryIndex", "beego.BConfig.WebConfig.DirectoryIndex",
|
||||
"beego.FlashName", "beego.BConfig.WebConfig.FlashName",
|
||||
"beego.FlashSeperator", "beego.BConfig.WebConfig.FlashSeparator",
|
||||
"beego.EnableDocs", "beego.BConfig.WebConfig.EnableDocs",
|
||||
"beego.XSRFKEY", "beego.BConfig.WebConfig.XSRFKey",
|
||||
"beego.EnableXSRF", "beego.BConfig.WebConfig.EnableXSRF",
|
||||
"beego.XSRFExpire", "beego.BConfig.WebConfig.XSRFExpire",
|
||||
"beego.TemplateLeft", "beego.BConfig.WebConfig.TemplateLeft",
|
||||
"beego.TemplateRight", "beego.BConfig.WebConfig.TemplateRight",
|
||||
"beego.SessionOn", "beego.BConfig.WebConfig.Session.SessionOn",
|
||||
"beego.SessionProvider", "beego.BConfig.WebConfig.Session.SessionProvider",
|
||||
"beego.SessionName", "beego.BConfig.WebConfig.Session.SessionName",
|
||||
"beego.SessionGCMaxLifetime", "beego.BConfig.WebConfig.Session.SessionGCMaxLifetime",
|
||||
"beego.SessionSavePath", "beego.BConfig.WebConfig.Session.SessionProviderConfig",
|
||||
"beego.SessionCookieLifeTime", "beego.BConfig.WebConfig.Session.SessionCookieLifeTime",
|
||||
"beego.SessionAutoSetCookie", "beego.BConfig.WebConfig.Session.SessionAutoSetCookie",
|
||||
"beego.SessionDomain", "beego.BConfig.WebConfig.Session.SessionDomain",
|
||||
"Ctx.Input.CopyBody(", "Ctx.Input.CopyBody(beego.BConfig.MaxMemory",
|
||||
".UrlFor(", ".URLFor(",
|
||||
".ServeJson(", ".ServeJSON(",
|
||||
".ServeXml(", ".ServeXML(",
|
||||
".ServeJsonp(", ".ServeJSONP(",
|
||||
".XsrfToken(", ".XSRFToken(",
|
||||
".CheckXsrfCookie(", ".CheckXSRFCookie(",
|
||||
".XsrfFormHtml(", ".XSRFFormHTML(",
|
||||
"beego.UrlFor(", "beego.URLFor(",
|
||||
"beego.GlobalDocApi", "beego.GlobalDocAPI",
|
||||
"beego.Errorhandler", "beego.ErrorHandler",
|
||||
"Output.Jsonp(", "Output.JSONP(",
|
||||
"Output.Json(", "Output.JSON(",
|
||||
"Output.Xml(", "Output.XML(",
|
||||
"Input.Uri()", "Input.URI()",
|
||||
"Input.Url()", "Input.URL()",
|
||||
"Input.AcceptsHtml()", "Input.AcceptsHTML()",
|
||||
"Input.AcceptsXml()", "Input.AcceptsXML()",
|
||||
"Input.AcceptsJson()", "Input.AcceptsJSON()",
|
||||
"Ctx.XsrfToken()", "Ctx.XSRFToken()",
|
||||
"Ctx.CheckXsrfCookie()", "Ctx.CheckXSRFCookie()",
|
||||
"session.SessionStore", "session.Store",
|
||||
".TplNames", ".TplName",
|
||||
"swagger.ApiRef", "swagger.APIRef",
|
||||
"swagger.ApiDeclaration", "swagger.APIDeclaration",
|
||||
"swagger.Api", "swagger.API",
|
||||
"swagger.ApiRef", "swagger.APIRef",
|
||||
"swagger.Infomation", "swagger.Information",
|
||||
"toolbox.UrlMap", "toolbox.URLMap",
|
||||
"logs.LoggerInterface", "logs.Logger",
|
||||
"Input.Request", "Input.Context.Request",
|
||||
"Input.Params)", "Input.Params())",
|
||||
"httplib.BeegoHttpSettings", "httplib.BeegoHTTPSettings",
|
||||
"httplib.BeegoHttpRequest", "httplib.BeegoHTTPRequest",
|
||||
".TlsClientConfig", ".TLSClientConfig",
|
||||
".JsonBody", ".JSONBody",
|
||||
".ToJson", ".ToJSON",
|
||||
".ToXml", ".ToXML",
|
||||
"beego.Html2str", "beego.HTML2str",
|
||||
"beego.AssetsCss", "beego.AssetsCSS",
|
||||
"orm.DR_Sqlite", "orm.DRSqlite",
|
||||
"orm.DR_Postgres", "orm.DRPostgres",
|
||||
"orm.DR_MySQL", "orm.DRMySQL",
|
||||
"orm.DR_Oracle", "orm.DROracle",
|
||||
"orm.Col_Add", "orm.ColAdd",
|
||||
"orm.Col_Minus", "orm.ColMinus",
|
||||
"orm.Col_Multiply", "orm.ColMultiply",
|
||||
"orm.Col_Except", "orm.ColExcept",
|
||||
"GenerateOperatorSql", "GenerateOperatorSQL",
|
||||
"OperatorSql", "OperatorSQL",
|
||||
"orm.Debug_Queries", "orm.DebugQueries",
|
||||
"orm.COMMA_SPACE", "orm.CommaSpace",
|
||||
".SendOut()", ".DoRequest()",
|
||||
"validation.ValidationError", "validation.Error",
|
||||
}
|
||||
|
||||
func fixFile(file string) error {
|
||||
rp := strings.NewReplacer(rules...)
|
||||
content, err := ioutil.ReadFile(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fixed := rp.Replace(string(content))
|
||||
|
||||
// Forword the RequestBody from the replace
|
||||
// "Input.Request", "Input.Context.Request",
|
||||
fixed = strings.Replace(fixed, "Input.Context.RequestBody", "Input.RequestBody", -1)
|
||||
|
||||
// Regexp replace
|
||||
pareg := regexp.MustCompile(`(Input.Params\[")(.*)("])`)
|
||||
fixed = pareg.ReplaceAllString(fixed, "Input.Param(\"$2\")")
|
||||
pareg = regexp.MustCompile(`(Input.Data\[\")(.*)(\"\])(\s)(=)(\s)(.*)`)
|
||||
fixed = pareg.ReplaceAllString(fixed, "Input.SetData(\"$2\", $7)")
|
||||
pareg = regexp.MustCompile(`(Input.Data\[\")(.*)(\"\])`)
|
||||
fixed = pareg.ReplaceAllString(fixed, "Input.Data(\"$2\")")
|
||||
// Fix the cache object Put method
|
||||
pareg = regexp.MustCompile(`(\.Put\(\")(.*)(\",)(\s)(.*)(,\s*)([^\*.]*)(\))`)
|
||||
if pareg.MatchString(fixed) && strings.HasSuffix(file, ".go") {
|
||||
fixed = pareg.ReplaceAllString(fixed, ".Put(\"$2\", $5, $7*time.Second)")
|
||||
fset := token.NewFileSet() // positions are relative to fset
|
||||
f, err := parser.ParseFile(fset, file, nil, parser.ImportsOnly)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
// Print the imports from the file's AST.
|
||||
hasTimepkg := false
|
||||
for _, s := range f.Imports {
|
||||
if s.Path.Value == `"time"` {
|
||||
hasTimepkg = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !hasTimepkg {
|
||||
fixed = strings.Replace(fixed, "import (", "import (\n\t\"time\"", 1)
|
||||
}
|
||||
}
|
||||
// Replace the v.Apis in docs.go
|
||||
if strings.Contains(file, "docs.go") {
|
||||
fixed = strings.Replace(fixed, "v.Apis", "v.APIs", -1)
|
||||
}
|
||||
// Replace the config file
|
||||
if strings.HasSuffix(file, ".conf") {
|
||||
fixed = strings.Replace(fixed, "HttpCertFile", "HTTPSCertFile", -1)
|
||||
fixed = strings.Replace(fixed, "HttpKeyFile", "HTTPSKeyFile", -1)
|
||||
fixed = strings.Replace(fixed, "EnableHttpListen", "HTTPEnable", -1)
|
||||
fixed = strings.Replace(fixed, "EnableHttpTLS", "EnableHTTPS", -1)
|
||||
fixed = strings.Replace(fixed, "EnableHttpTLS", "EnableHTTPS", -1)
|
||||
fixed = strings.Replace(fixed, "BeegoServerName", "ServerName", -1)
|
||||
fixed = strings.Replace(fixed, "AdminHttpAddr", "AdminAddr", -1)
|
||||
fixed = strings.Replace(fixed, "AdminHttpPort", "AdminPort", -1)
|
||||
fixed = strings.Replace(fixed, "HttpServerTimeOut", "ServerTimeOut", -1)
|
||||
}
|
||||
err = os.Truncate(file, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ioutil.WriteFile(file, []byte(fixed), 0666)
|
||||
}
|
||||
|
49
cmd/commands/beefix/fix1To2.go
Normal file
49
cmd/commands/beefix/fix1To2.go
Normal file
@ -0,0 +1,49 @@
|
||||
// Copyright 2020
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package beefix
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/exec"
|
||||
|
||||
beeLogger "github.com/beego/bee/logger"
|
||||
)
|
||||
|
||||
func fix1To2() int {
|
||||
beeLogger.Log.Info("Upgrading the application...")
|
||||
|
||||
cmdStr := `find ./ -name '*.go' -type f -exec sed -i '' -e 's/github.com\/astaxie\/beego/github.com\/astaxie\/beego\/adapter/g' {} \;`
|
||||
err := runShell(cmdStr)
|
||||
if err != nil {
|
||||
return 1
|
||||
}
|
||||
cmdStr = `find ./ -name '*.go' -type f -exec sed -i '' -e 's/"github.com\/astaxie\/beego\/adapter"/beego "github.com\/astaxie\/beego\/adapter"/g' {} \;`
|
||||
err = runShell(cmdStr)
|
||||
if err != nil {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func runShell(cmdStr string) error {
|
||||
c := exec.Command("sh", "-c", cmdStr)
|
||||
c.Stdout = os.Stdout
|
||||
err := c.Run()
|
||||
if err != nil {
|
||||
beeLogger.Log.Errorf("execute command [%s] failed: %s", cmdStr, err.Error())
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
231
cmd/commands/beefix/fixTo1.6.go
Normal file
231
cmd/commands/beefix/fixTo1.6.go
Normal file
@ -0,0 +1,231 @@
|
||||
// Copyright 2020
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package beefix
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/parser"
|
||||
"go/token"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/beego/bee/cmd/commands"
|
||||
beeLogger "github.com/beego/bee/logger"
|
||||
"github.com/beego/bee/logger/colors"
|
||||
)
|
||||
|
||||
// fixTo16 upgrade beego to 1.6
|
||||
func fixTo16(cmd *commands.Command, args []string) int {
|
||||
output := cmd.Out()
|
||||
|
||||
beeLogger.Log.Info("Upgrading the application...")
|
||||
|
||||
dir, err := os.Getwd()
|
||||
if err != nil {
|
||||
beeLogger.Log.Fatalf("Error while getting the current working directory: %s", err)
|
||||
}
|
||||
|
||||
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
|
||||
if info.IsDir() {
|
||||
if strings.HasPrefix(info.Name(), ".") {
|
||||
return filepath.SkipDir
|
||||
}
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if strings.HasSuffix(info.Name(), ".exe") {
|
||||
return nil
|
||||
}
|
||||
err = fixFile(path)
|
||||
fmt.Fprintf(output, colors.GreenBold("\tfix\t")+"%s\n", path)
|
||||
if err != nil {
|
||||
beeLogger.Log.Errorf("Could not fix file: %s", err)
|
||||
}
|
||||
return err
|
||||
})
|
||||
beeLogger.Log.Success("Upgrade Done!")
|
||||
return 0
|
||||
}
|
||||
|
||||
var rules = []string{
|
||||
"beego.AppName", "beego.BConfig.AppName",
|
||||
"beego.RunMode", "beego.BConfig.RunMode",
|
||||
"beego.RecoverPanic", "beego.BConfig.RecoverPanic",
|
||||
"beego.RouterCaseSensitive", "beego.BConfig.RouterCaseSensitive",
|
||||
"beego.BeegoServerName", "beego.BConfig.ServerName",
|
||||
"beego.EnableGzip", "beego.BConfig.EnableGzip",
|
||||
"beego.ErrorsShow", "beego.BConfig.EnableErrorsShow",
|
||||
"beego.CopyRequestBody", "beego.BConfig.CopyRequestBody",
|
||||
"beego.MaxMemory", "beego.BConfig.MaxMemory",
|
||||
"beego.Graceful", "beego.BConfig.Listen.Graceful",
|
||||
"beego.HttpAddr", "beego.BConfig.Listen.HTTPAddr",
|
||||
"beego.HttpPort", "beego.BConfig.Listen.HTTPPort",
|
||||
"beego.ListenTCP4", "beego.BConfig.Listen.ListenTCP4",
|
||||
"beego.EnableHttpListen", "beego.BConfig.Listen.EnableHTTP",
|
||||
"beego.EnableHttpTLS", "beego.BConfig.Listen.EnableHTTPS",
|
||||
"beego.HttpsAddr", "beego.BConfig.Listen.HTTPSAddr",
|
||||
"beego.HttpsPort", "beego.BConfig.Listen.HTTPSPort",
|
||||
"beego.HttpCertFile", "beego.BConfig.Listen.HTTPSCertFile",
|
||||
"beego.HttpKeyFile", "beego.BConfig.Listen.HTTPSKeyFile",
|
||||
"beego.EnableAdmin", "beego.BConfig.Listen.EnableAdmin",
|
||||
"beego.AdminHttpAddr", "beego.BConfig.Listen.AdminAddr",
|
||||
"beego.AdminHttpPort", "beego.BConfig.Listen.AdminPort",
|
||||
"beego.UseFcgi", "beego.BConfig.Listen.EnableFcgi",
|
||||
"beego.HttpServerTimeOut", "beego.BConfig.Listen.ServerTimeOut",
|
||||
"beego.AutoRender", "beego.BConfig.WebConfig.AutoRender",
|
||||
"beego.ViewsPath", "beego.BConfig.WebConfig.ViewsPath",
|
||||
"beego.StaticDir", "beego.BConfig.WebConfig.StaticDir",
|
||||
"beego.StaticExtensionsToGzip", "beego.BConfig.WebConfig.StaticExtensionsToGzip",
|
||||
"beego.DirectoryIndex", "beego.BConfig.WebConfig.DirectoryIndex",
|
||||
"beego.FlashName", "beego.BConfig.WebConfig.FlashName",
|
||||
"beego.FlashSeperator", "beego.BConfig.WebConfig.FlashSeparator",
|
||||
"beego.EnableDocs", "beego.BConfig.WebConfig.EnableDocs",
|
||||
"beego.XSRFKEY", "beego.BConfig.WebConfig.XSRFKey",
|
||||
"beego.EnableXSRF", "beego.BConfig.WebConfig.EnableXSRF",
|
||||
"beego.XSRFExpire", "beego.BConfig.WebConfig.XSRFExpire",
|
||||
"beego.TemplateLeft", "beego.BConfig.WebConfig.TemplateLeft",
|
||||
"beego.TemplateRight", "beego.BConfig.WebConfig.TemplateRight",
|
||||
"beego.SessionOn", "beego.BConfig.WebConfig.Session.SessionOn",
|
||||
"beego.SessionProvider", "beego.BConfig.WebConfig.Session.SessionProvider",
|
||||
"beego.SessionName", "beego.BConfig.WebConfig.Session.SessionName",
|
||||
"beego.SessionGCMaxLifetime", "beego.BConfig.WebConfig.Session.SessionGCMaxLifetime",
|
||||
"beego.SessionSavePath", "beego.BConfig.WebConfig.Session.SessionProviderConfig",
|
||||
"beego.SessionCookieLifeTime", "beego.BConfig.WebConfig.Session.SessionCookieLifeTime",
|
||||
"beego.SessionAutoSetCookie", "beego.BConfig.WebConfig.Session.SessionAutoSetCookie",
|
||||
"beego.SessionDomain", "beego.BConfig.WebConfig.Session.SessionDomain",
|
||||
"Ctx.Input.CopyBody(", "Ctx.Input.CopyBody(beego.BConfig.MaxMemory",
|
||||
".UrlFor(", ".URLFor(",
|
||||
".ServeJson(", ".ServeJSON(",
|
||||
".ServeXml(", ".ServeXML(",
|
||||
".ServeJsonp(", ".ServeJSONP(",
|
||||
".XsrfToken(", ".XSRFToken(",
|
||||
".CheckXsrfCookie(", ".CheckXSRFCookie(",
|
||||
".XsrfFormHtml(", ".XSRFFormHTML(",
|
||||
"beego.UrlFor(", "beego.URLFor(",
|
||||
"beego.GlobalDocApi", "beego.GlobalDocAPI",
|
||||
"beego.Errorhandler", "beego.ErrorHandler",
|
||||
"Output.Jsonp(", "Output.JSONP(",
|
||||
"Output.Json(", "Output.JSON(",
|
||||
"Output.Xml(", "Output.XML(",
|
||||
"Input.Uri()", "Input.URI()",
|
||||
"Input.Url()", "Input.URL()",
|
||||
"Input.AcceptsHtml()", "Input.AcceptsHTML()",
|
||||
"Input.AcceptsXml()", "Input.AcceptsXML()",
|
||||
"Input.AcceptsJson()", "Input.AcceptsJSON()",
|
||||
"Ctx.XsrfToken()", "Ctx.XSRFToken()",
|
||||
"Ctx.CheckXsrfCookie()", "Ctx.CheckXSRFCookie()",
|
||||
"session.SessionStore", "session.Store",
|
||||
".TplNames", ".TplName",
|
||||
"swagger.ApiRef", "swagger.APIRef",
|
||||
"swagger.ApiDeclaration", "swagger.APIDeclaration",
|
||||
"swagger.Api", "swagger.API",
|
||||
"swagger.ApiRef", "swagger.APIRef",
|
||||
"swagger.Infomation", "swagger.Information",
|
||||
"toolbox.UrlMap", "toolbox.URLMap",
|
||||
"logs.LoggerInterface", "logs.Logger",
|
||||
"Input.Request", "Input.Context.Request",
|
||||
"Input.Params)", "Input.Params())",
|
||||
"httplib.BeegoHttpSettings", "httplib.BeegoHTTPSettings",
|
||||
"httplib.BeegoHttpRequest", "httplib.BeegoHTTPRequest",
|
||||
".TlsClientConfig", ".TLSClientConfig",
|
||||
".JsonBody", ".JSONBody",
|
||||
".ToJson", ".ToJSON",
|
||||
".ToXml", ".ToXML",
|
||||
"beego.Html2str", "beego.HTML2str",
|
||||
"beego.AssetsCss", "beego.AssetsCSS",
|
||||
"orm.DR_Sqlite", "orm.DRSqlite",
|
||||
"orm.DR_Postgres", "orm.DRPostgres",
|
||||
"orm.DR_MySQL", "orm.DRMySQL",
|
||||
"orm.DR_Oracle", "orm.DROracle",
|
||||
"orm.Col_Add", "orm.ColAdd",
|
||||
"orm.Col_Minus", "orm.ColMinus",
|
||||
"orm.Col_Multiply", "orm.ColMultiply",
|
||||
"orm.Col_Except", "orm.ColExcept",
|
||||
"GenerateOperatorSql", "GenerateOperatorSQL",
|
||||
"OperatorSql", "OperatorSQL",
|
||||
"orm.Debug_Queries", "orm.DebugQueries",
|
||||
"orm.COMMA_SPACE", "orm.CommaSpace",
|
||||
".SendOut()", ".DoRequest()",
|
||||
"validation.ValidationError", "validation.Error",
|
||||
}
|
||||
|
||||
func fixFile(file string) error {
|
||||
rp := strings.NewReplacer(rules...)
|
||||
content, err := ioutil.ReadFile(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fixed := rp.Replace(string(content))
|
||||
|
||||
// Forword the RequestBody from the replace
|
||||
// "Input.Request", "Input.Context.Request",
|
||||
fixed = strings.Replace(fixed, "Input.Context.RequestBody", "Input.RequestBody", -1)
|
||||
|
||||
// Regexp replace
|
||||
pareg := regexp.MustCompile(`(Input.Params\[")(.*)("])`)
|
||||
fixed = pareg.ReplaceAllString(fixed, "Input.Param(\"$2\")")
|
||||
pareg = regexp.MustCompile(`(Input.Data\[\")(.*)(\"\])(\s)(=)(\s)(.*)`)
|
||||
fixed = pareg.ReplaceAllString(fixed, "Input.SetData(\"$2\", $7)")
|
||||
pareg = regexp.MustCompile(`(Input.Data\[\")(.*)(\"\])`)
|
||||
fixed = pareg.ReplaceAllString(fixed, "Input.Data(\"$2\")")
|
||||
// Fix the cache object Put method
|
||||
pareg = regexp.MustCompile(`(\.Put\(\")(.*)(\",)(\s)(.*)(,\s*)([^\*.]*)(\))`)
|
||||
if pareg.MatchString(fixed) && strings.HasSuffix(file, ".go") {
|
||||
fixed = pareg.ReplaceAllString(fixed, ".Put(\"$2\", $5, $7*time.Second)")
|
||||
fset := token.NewFileSet() // positions are relative to fset
|
||||
f, err := parser.ParseFile(fset, file, nil, parser.ImportsOnly)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
// Print the imports from the file's AST.
|
||||
hasTimepkg := false
|
||||
for _, s := range f.Imports {
|
||||
if s.Path.Value == `"time"` {
|
||||
hasTimepkg = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !hasTimepkg {
|
||||
fixed = strings.Replace(fixed, "import (", "import (\n\t\"time\"", 1)
|
||||
}
|
||||
}
|
||||
// Replace the v.Apis in docs.go
|
||||
if strings.Contains(file, "docs.go") {
|
||||
fixed = strings.Replace(fixed, "v.Apis", "v.APIs", -1)
|
||||
}
|
||||
// Replace the config file
|
||||
if strings.HasSuffix(file, ".conf") {
|
||||
fixed = strings.Replace(fixed, "HttpCertFile", "HTTPSCertFile", -1)
|
||||
fixed = strings.Replace(fixed, "HttpKeyFile", "HTTPSKeyFile", -1)
|
||||
fixed = strings.Replace(fixed, "EnableHttpListen", "HTTPEnable", -1)
|
||||
fixed = strings.Replace(fixed, "EnableHttpTLS", "EnableHTTPS", -1)
|
||||
fixed = strings.Replace(fixed, "EnableHttpTLS", "EnableHTTPS", -1)
|
||||
fixed = strings.Replace(fixed, "BeegoServerName", "ServerName", -1)
|
||||
fixed = strings.Replace(fixed, "AdminHttpAddr", "AdminAddr", -1)
|
||||
fixed = strings.Replace(fixed, "AdminHttpPort", "AdminPort", -1)
|
||||
fixed = strings.Replace(fixed, "HttpServerTimeOut", "ServerTimeOut", -1)
|
||||
}
|
||||
err = os.Truncate(file, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ioutil.WriteFile(file, []byte(fixed), 0666)
|
||||
}
|
||||
|
1
go.mod
1
go.mod
@ -13,6 +13,7 @@ require (
|
||||
github.com/gorilla/websocket v1.4.2
|
||||
github.com/lib/pq v1.7.0
|
||||
github.com/pelletier/go-toml v1.2.0
|
||||
github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 // indirect
|
||||
github.com/smartwalle/pongo2render v1.0.1
|
||||
github.com/spf13/viper v1.7.0
|
||||
gopkg.in/yaml.v2 v2.3.0
|
||||
|
3
go.sum
3
go.sum
@ -24,6 +24,7 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV
|
||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||
github.com/astaxie/beego v1.12.1 h1:dfpuoxpzLVgclveAXe4PyNKqkzgm5zF4tgF2B3kkM2I=
|
||||
github.com/astaxie/beego v1.12.1/go.mod h1:kPBWpSANNbSdIqOc8SUL9h+1oyBMZhROeYsXQDbidWQ=
|
||||
github.com/astaxie/beego v1.12.2 h1:CajUexhSX5ONWDiSCpeQBNVfTzOtPb9e9d+3vuU5FuU=
|
||||
github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkYwXMUU0OhQqGvsY2Bvgr4j6jfT699wyZKQ=
|
||||
github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
@ -198,6 +199,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
|
||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 h1:DAYUYH5869yV94zvCES9F51oYtN5oGlwjxJJz7ZCnik=
|
||||
github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg=
|
||||
github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
|
||||
github.com/siddontang/ledisdb v0.0.0-20181029004158-becf5f38d373/go.mod h1:mF1DpOSOUiJRMR+FDqaqu3EBqrybQtrDDszLUZ6oxPg=
|
||||
github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA=
|
||||
|
Loading…
Reference in New Issue
Block a user