mirror of
https://github.com/beego/bee.git
synced 2024-11-22 05:00:54 +00:00
Merge pull request #726 from flycash/develop
Bee fix command support v2.x
This commit is contained in:
commit
1ed5c71087
@ -1,6 +1,6 @@
|
|||||||
language: go
|
language: go
|
||||||
go:
|
go:
|
||||||
- 1.12.17
|
- 1.14.6
|
||||||
install:
|
install:
|
||||||
- export PATH=$PATH:$HOME/gopath/bin
|
- export PATH=$PATH:$HOME/gopath/bin
|
||||||
- go get -u github.com/opennota/check/cmd/structcheck
|
- go get -u github.com/opennota/check/cmd/structcheck
|
||||||
|
@ -1,232 +1,48 @@
|
|||||||
package beefix
|
package beefix
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"go/parser"
|
|
||||||
"go/token"
|
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"regexp"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/beego/bee/cmd/commands"
|
"github.com/beego/bee/cmd/commands"
|
||||||
"github.com/beego/bee/cmd/commands/version"
|
"github.com/beego/bee/cmd/commands/version"
|
||||||
beeLogger "github.com/beego/bee/logger"
|
beeLogger "github.com/beego/bee/logger"
|
||||||
"github.com/beego/bee/logger/colors"
|
"github.com/beego/bee/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var CmdFix = &commands.Command{
|
var CmdFix = &commands.Command{
|
||||||
UsageLine: "fix",
|
UsageLine: "fix",
|
||||||
Short: "Fixes your application by making it compatible with newer versions of Beego",
|
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
|
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() {
|
func init() {
|
||||||
CmdFix.Run = runFix
|
CmdFix.Run = runFix
|
||||||
CmdFix.PreRun = func(cmd *commands.Command, args []string) { version.ShowShortVersionBanner() }
|
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)
|
commands.AvailableCommands = append(commands.AvailableCommands, CmdFix)
|
||||||
}
|
}
|
||||||
|
|
||||||
func runFix(cmd *commands.Command, args []string) int {
|
func runFix(cmd *commands.Command, args []string) int {
|
||||||
output := cmd.Out()
|
t := target.String()
|
||||||
|
if t == "" || t == "1.6"{
|
||||||
beeLogger.Log.Info("Upgrading the application...")
|
return fixTo16(cmd, args)
|
||||||
|
} else if strings.HasPrefix(t, "2") {
|
||||||
dir, err := os.Getwd()
|
// upgrade to v2
|
||||||
if err != nil {
|
return fix1To2()
|
||||||
beeLogger.Log.Fatalf("Error while getting the current working directory: %s", err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
|
beeLogger.Log.Info("The target is compatible version, do nothing")
|
||||||
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
|
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/gorilla/websocket v1.4.2
|
||||||
github.com/lib/pq v1.7.0
|
github.com/lib/pq v1.7.0
|
||||||
github.com/pelletier/go-toml v1.2.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/smartwalle/pongo2render v1.0.1
|
||||||
github.com/spf13/viper v1.7.0
|
github.com/spf13/viper v1.7.0
|
||||||
gopkg.in/yaml.v2 v2.3.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/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 h1:dfpuoxpzLVgclveAXe4PyNKqkzgm5zF4tgF2B3kkM2I=
|
||||||
github.com/astaxie/beego v1.12.1/go.mod h1:kPBWpSANNbSdIqOc8SUL9h+1oyBMZhROeYsXQDbidWQ=
|
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/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/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=
|
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/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/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/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/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/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=
|
github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA=
|
||||||
|
Loading…
Reference in New Issue
Block a user