feat: Replace cli to cobra (#1855)
* Replace cli * Replace cli * Replace cli * Format code * Add compare case * Add compare case * Add compare case * Support go style flag * Support go style flag * Add test case
This commit is contained in:
17
tools/goctl/compare/testdata/kotlin.api
vendored
Normal file
17
tools/goctl/compare/testdata/kotlin.api
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
syntax = "v1"
|
||||
|
||||
info(
|
||||
title: "type title here"
|
||||
desc: "type desc here"
|
||||
author: "type author here"
|
||||
email: "type email here"
|
||||
version: "type version here"
|
||||
)
|
||||
|
||||
type req{}
|
||||
type reply{}
|
||||
|
||||
service kotlin-api{
|
||||
@handler ping
|
||||
post /ping
|
||||
}
|
||||
470
tools/goctl/compare/testdata/testcase.go
vendored
Normal file
470
tools/goctl/compare/testdata/testcase.go
vendored
Normal file
@@ -0,0 +1,470 @@
|
||||
package testdata
|
||||
|
||||
import _ "embed"
|
||||
|
||||
var (
|
||||
//go:embed unformat.api
|
||||
unformatApi string
|
||||
//go:embed kotlin.api
|
||||
kotlinApi string
|
||||
//go:embed user.sql
|
||||
userSql string
|
||||
|
||||
list = Files{
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "version",
|
||||
Cmd: "goctl --version",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/sample_file/local",
|
||||
Cmd: "goctl api --o sample.api",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/sample_file/local/assign",
|
||||
Cmd: "goctl api --o=sample.api",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/sample_file/local/assign/shorthand",
|
||||
Cmd: "goctl api -o=sample.api",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/sample_file/remote",
|
||||
Cmd: "goctl api --o sample.api --remote https://github.com/zeromicro/go-zero-template --branch main",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/sample_file/remote/shorthand",
|
||||
Cmd: "goctl api -o sample.api -remote https://github.com/zeromicro/go-zero-template -branch main",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/sample_file/remote/assign",
|
||||
Cmd: "goctl api --o=sample.api --remote https://github.com/zeromicro/go-zero-template --branch=main",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/sample_file/remote/assign/shorthand",
|
||||
Cmd: "goctl api -o=sample.api -remote https://github.com/zeromicro/go-zero-template -branch=main",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/dart/legacy/true",
|
||||
Cmd: "goctl api --o sample.api && goctl api dart --api sample.api --dir . --hostname 127.0.0.1 --legacy true",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/dart/legacy/true/shorthand",
|
||||
Cmd: "goctl api -o sample.api && goctl api dart -api sample.api -dir . -hostname 127.0.0.1 -legacy true",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/dart/legacy/true/assign",
|
||||
Cmd: "goctl api --o=sample.api && goctl api dart --api=sample.api --dir=. --hostname=127.0.0.1 --legacy=true",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/dart/legacy/true/assign/shorthand",
|
||||
Cmd: "goctl api -o=sample.api && goctl api dart -api=sample.api -dir=. -hostname=127.0.0.1 -legacy=true",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/dart/legacy/false",
|
||||
Cmd: "goctl api --o sample.api && goctl api dart --api sample.api --dir . --hostname 127.0.0.1 --legacy true",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/dart/legacy/false/shorthand",
|
||||
Cmd: "goctl api -o sample.api && goctl api dart -api sample.api -dir . -hostname 127.0.0.1 -legacy true",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/dart/legacy/false/assign",
|
||||
Cmd: "goctl api --o=sample.api && goctl api dart --api=sample.api --dir=. --hostname=127.0.0.1 --legacy=true",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/dart/legacy/false/assign/shorthand",
|
||||
Cmd: "goctl api -o=sample.api && goctl api dart -api=sample.api -dir=. -hostname=127.0.0.1 -legacy=true",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/doc",
|
||||
Cmd: "goctl api --o sample.api && goctl api doc --dir . --o .",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/doc/shorthand",
|
||||
Cmd: "goctl api -o sample.api && goctl api doc -dir . -o .",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/doc/assign",
|
||||
Cmd: "goctl api --o=sample.api && goctl api doc --dir=. --o=.",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/doc/assign/shorthand",
|
||||
Cmd: "goctl api -o=sample.api && goctl api doc -dir=. -o=.",
|
||||
},
|
||||
{
|
||||
Path: "api/format/unformat.api",
|
||||
Content: unformatApi,
|
||||
Cmd: "goctl api format --dir . --iu",
|
||||
},
|
||||
{
|
||||
Path: "api/format/shorthand/unformat.api",
|
||||
Content: unformatApi,
|
||||
Cmd: "goctl api format -dir . -iu",
|
||||
},
|
||||
{
|
||||
Path: "api/format/assign/unformat.api",
|
||||
Content: unformatApi,
|
||||
Cmd: "goctl api format --dir=. --iu",
|
||||
},
|
||||
{
|
||||
Path: "api/format/assign/shorthand/unformat.api",
|
||||
Content: unformatApi,
|
||||
Cmd: "goctl api format -dir=. -iu",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/go/style/default",
|
||||
Cmd: "goctl api --o sample.api && goctl api go --api sample.api --dir .",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/go/style/default/shorthand",
|
||||
Cmd: "goctl api -o sample.api && goctl api go -api sample.api -dir .",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/go/style/assign/default",
|
||||
Cmd: "goctl api --o=sample.api && goctl api go --api=sample.api --dir=.",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/go/style/assign/default/shorthand",
|
||||
Cmd: "goctl api -o=sample.api && goctl api go -api=sample.api -dir=.",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/go/style/goZero",
|
||||
Cmd: "goctl api --o sample.api && goctl api go --api sample.api --dir . --style goZero",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/go/style/goZero/shorthand",
|
||||
Cmd: "goctl api -o sample.api && goctl api go -api sample.api -dir . -style goZero",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/go/style/goZero/assign",
|
||||
Cmd: "goctl api --o=sample.api && goctl api go --api=sample.api --dir=. --style=goZero",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/go/style/goZero/assign/shorthand",
|
||||
Cmd: "goctl api -o=sample.api && goctl api go -api=sample.api -dir=. -style=goZero",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/java",
|
||||
Cmd: "goctl api --o sample.api && goctl api java --api sample.api --dir .",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/java/shorthand",
|
||||
Cmd: "goctl api -o sample.api && goctl api java -api sample.api -dir .",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/java/assign",
|
||||
Cmd: "goctl api --o=sample.api && goctl api java --api=sample.api --dir=.",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/java/shorthand/assign",
|
||||
Cmd: "goctl api -o=sample.api && goctl api java -api=sample.api -dir=.",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/new/style/default",
|
||||
Cmd: "goctl api new greet",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/new/style/goZero",
|
||||
Cmd: "goctl api new greet --style goZero",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/new/style/goZero/assign",
|
||||
Cmd: "goctl api new greet --style=goZero",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/new/style/goZero/shorthand",
|
||||
Cmd: "goctl api new greet -style goZero",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/new/style/goZero/shorthand/assign",
|
||||
Cmd: "goctl api new greet -style=goZero",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/ts",
|
||||
Cmd: "goctl api --o sample.api && goctl api ts --api sample.api --dir . --unwrap --webapi .",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/ts/shorthand",
|
||||
Cmd: "goctl api -o sample.api && goctl api ts -api sample.api -dir . -unwrap -webapi .",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/ts/assign",
|
||||
Cmd: "goctl api --o=sample.api && goctl api ts --api=sample.api --dir=. --unwrap --webapi=.",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/ts/shorthand/assign",
|
||||
Cmd: "goctl api -o=sample.api && goctl api ts -api=sample.api -dir=. -unwrap -webapi=.",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/validate",
|
||||
Cmd: "goctl api --o sample.api && goctl api validate --api sample.api",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/validate/shorthand",
|
||||
Cmd: "goctl api -o sample.api && goctl api validate -api sample.api",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/validate/assign",
|
||||
Cmd: "goctl api --o=sample.api && goctl api validate --api=sample.api",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "api/validate/shorthand/assign",
|
||||
Cmd: "goctl api -o=sample.api && goctl api validate -api=sample.api",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "env/show",
|
||||
Cmd: "goctl env > env.txt",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "env/check",
|
||||
Cmd: "goctl env check -f -v",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "env/install",
|
||||
Cmd: "goctl env install -v",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "kube",
|
||||
Cmd: "goctl kube deploy --image alpine --name foo --namespace foo --o foo.yaml --port 8888",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "kube/shorthand",
|
||||
Cmd: "goctl kube deploy -image alpine -name foo -namespace foo -o foo.yaml -port 8888",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "kube/assign",
|
||||
Cmd: "goctl kube deploy --image=alpine --name=foo --namespace=foo --o=foo.yaml --port=8888",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "kube/shorthand/assign",
|
||||
Cmd: "goctl kube deploy -image=alpine -name=foo -namespace=foo -o=foo.yaml -port=8888",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mongo/cache",
|
||||
Cmd: "goctl model mongo --dir . --type user --style goZero -c",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mongo/cache/shorthand",
|
||||
Cmd: "goctl model mongo -dir . -type user -style goZero -c",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mongo/cache/assign",
|
||||
Cmd: "goctl model mongo --dir=. --type=user --style=goZero -c",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mongo/cache/shorthand/assign",
|
||||
Cmd: "goctl model mongo -dir=. -type=user -style=goZero -c",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mongo/nocache",
|
||||
Cmd: "goctl model mongo --dir . --type user",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mongo/nocache/shorthand",
|
||||
Cmd: "goctl model mongo -dir . -type user",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mongo/nocache/assign",
|
||||
Cmd: "goctl model mongo --dir=. --type=user",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mongo/nocache/shorthand/assign",
|
||||
Cmd: "goctl model mongo -dir=. -type=user",
|
||||
},
|
||||
{
|
||||
Content: userSql,
|
||||
Path: "model/mysql/ddl/user.sql",
|
||||
Cmd: "goctl model mysql ddl --database user --dir cache --src user.sql -c",
|
||||
},
|
||||
{
|
||||
Content: userSql,
|
||||
Path: "model/mysql/ddl/shorthand/user.sql",
|
||||
Cmd: "goctl model mysql ddl -database user -dir cache -src user.sql -c",
|
||||
},
|
||||
{
|
||||
Content: userSql,
|
||||
Path: "model/mysql/ddl/assign/user.sql",
|
||||
Cmd: "goctl model mysql ddl --database=user --dir=cache --src=user.sql -c",
|
||||
},
|
||||
{
|
||||
Content: userSql,
|
||||
Path: "model/mysql/ddl/shorthand/assign/user.sql",
|
||||
Cmd: "goctl model mysql ddl -database=user -dir=cache -src=user.sql -c",
|
||||
},
|
||||
{
|
||||
Content: userSql,
|
||||
Path: "model/mysql/ddl/user.sql",
|
||||
Cmd: "goctl model mysql ddl --database user --dir nocache --src user.sql",
|
||||
},
|
||||
{
|
||||
Content: userSql,
|
||||
Path: "model/mysql/ddl/shorthand/user.sql",
|
||||
Cmd: "goctl model mysql ddl -database user -dir nocache -src user.sql",
|
||||
},
|
||||
{
|
||||
Content: userSql,
|
||||
Path: "model/mysql/ddl/assign/user.sql",
|
||||
Cmd: "goctl model mysql ddl --database=user --dir=nocache --src=user.sql",
|
||||
},
|
||||
{
|
||||
Content: userSql,
|
||||
Path: "model/mysql/ddl/shorthand/assign/user.sql",
|
||||
Cmd: "goctl model mysql ddl -database=user -dir=nocache -src=user.sql",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource",
|
||||
Cmd: `goctl model mysql datasource --url $DSN --dir cache --table "*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/shorthand",
|
||||
Cmd: `goctl model mysql datasource -url $DSN -dir cache -table "*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/shorthand2",
|
||||
Cmd: `goctl model mysql datasource -url $DSN -dir cache -t "*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/assign",
|
||||
Cmd: `goctl model mysql datasource --url=$DSN --dir=cache --table="*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/shorthand/assign",
|
||||
Cmd: `goctl model mysql datasource -url=$DSN -dir=cache -table="*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/shorthand2/assign",
|
||||
Cmd: `goctl model mysql datasource -url=$DSN -dir=cache -t="*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource",
|
||||
Cmd: `goctl model mysql datasource --url $DSN --dir nocache --table "*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/shorthand",
|
||||
Cmd: `goctl model mysql datasource -url $DSN -dir nocache -table "*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/shorthand2",
|
||||
Cmd: `goctl model mysql datasource -url $DSN -dir nocache -t "*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/assign",
|
||||
Cmd: `goctl model mysql datasource --url=$DSN --dir=nocache --table="*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/shorthand/assign",
|
||||
Cmd: `goctl model mysql datasource -url=$DSN -dir=nocache -table="*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "model/mysql/datasource/shorthand2/assign",
|
||||
Cmd: `goctl model mysql datasource -url=$DSN -dir=nocache -t="*" -c`,
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "rpc/new",
|
||||
Cmd: "goctl rpc new greet",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "rpc/template",
|
||||
Cmd: "goctl rpc template --o greet.proto",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "rpc/template/shorthand",
|
||||
Cmd: "goctl rpc template -o greet.proto",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "rpc/template/assign",
|
||||
Cmd: "goctl rpc template --o=greet.proto",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "rpc/template/shorthand/assign",
|
||||
Cmd: "goctl rpc template -o=greet.proto",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "rpc/protoc",
|
||||
Cmd: "goctl rpc template --o greet.proto && goctl rpc protoc greet.proto --go_out . --go-grpc_out . --zrpc_out .",
|
||||
},
|
||||
{
|
||||
IsDir: true,
|
||||
Path: "rpc/protoc/assign",
|
||||
Cmd: "goctl rpc template --o=greet.proto && goctl rpc protoc greet.proto --go_out=. --go-grpc_out=. --zrpc_out=.",
|
||||
},
|
||||
}
|
||||
)
|
||||
120
tools/goctl/compare/testdata/testdata.go
vendored
Normal file
120
tools/goctl/compare/testdata/testdata.go
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
package testdata
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/logrusorgru/aurora"
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
||||
)
|
||||
|
||||
type (
|
||||
File struct {
|
||||
IsDir bool
|
||||
Path string
|
||||
AbsolutePath string
|
||||
Content string
|
||||
Cmd string
|
||||
}
|
||||
|
||||
Files []File
|
||||
)
|
||||
|
||||
func (f File) execute(goctl string) error {
|
||||
printDir := f.Path
|
||||
dir := f.AbsolutePath
|
||||
if !f.IsDir {
|
||||
printDir = filepath.Dir(printDir)
|
||||
dir = filepath.Dir(dir)
|
||||
}
|
||||
printCommand := strings.ReplaceAll(fmt.Sprintf("cd %s && %s", printDir, f.Cmd), "goctl", filepath.Base(goctl))
|
||||
command := strings.ReplaceAll(fmt.Sprintf("cd %s && %s", dir, f.Cmd), "goctl", goctl)
|
||||
fmt.Println(aurora.BrightGreen(printCommand))
|
||||
cmd := exec.Command("sh", "-c", command)
|
||||
cmd.Env = os.Environ()
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
}
|
||||
|
||||
func (fs Files) execute(goctl string) error {
|
||||
for _, f := range fs {
|
||||
err := f.execute(goctl)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func mustGetTestData(baseDir string) (Files, Files) {
|
||||
if len(baseDir) == 0 {
|
||||
dir, err := os.Getwd()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
baseDir = dir
|
||||
}
|
||||
baseDir, err := filepath.Abs(baseDir)
|
||||
if err != nil {
|
||||
return nil, nil
|
||||
}
|
||||
createFile := func(baseDir string, data File) (File, error) {
|
||||
fp := filepath.Join(baseDir, data.Path)
|
||||
dir := filepath.Dir(fp)
|
||||
if data.IsDir {
|
||||
dir = fp
|
||||
}
|
||||
if err := pathx.MkdirIfNotExist(dir); err != nil {
|
||||
return data, err
|
||||
}
|
||||
data.AbsolutePath = fp
|
||||
if data.IsDir {
|
||||
return data, nil
|
||||
}
|
||||
|
||||
return data, ioutil.WriteFile(fp, []byte(data.Content), os.ModePerm)
|
||||
}
|
||||
oldDir := filepath.Join(baseDir, "old_fs")
|
||||
newDir := filepath.Join(baseDir, "new_fs")
|
||||
os.RemoveAll(oldDir)
|
||||
os.RemoveAll(newDir)
|
||||
var oldFiles, newFiles []File
|
||||
for _, data := range list {
|
||||
od, err := createFile(oldDir, data)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
oldFiles = append(oldFiles, od)
|
||||
nd, err := createFile(newDir, data)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
newFiles = append(newFiles, nd)
|
||||
}
|
||||
return oldFiles, newFiles
|
||||
}
|
||||
|
||||
func MustRun(baseDir string) {
|
||||
oldFiles, newFiles := mustGetTestData(baseDir)
|
||||
goctlOld, err := exec.LookPath("goctl.old")
|
||||
must(err)
|
||||
goctlNew, err := exec.LookPath("goctl")
|
||||
must(err)
|
||||
fmt.Println(aurora.BrightBlue("========================goctl.old======================="))
|
||||
must(oldFiles.execute(goctlOld))
|
||||
fmt.Println()
|
||||
fmt.Println(aurora.BrightBlue("========================goctl.new======================="))
|
||||
must(newFiles.execute(goctlNew))
|
||||
}
|
||||
|
||||
func must(err error) {
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
}
|
||||
3
tools/goctl/compare/testdata/unformat.api
vendored
Normal file
3
tools/goctl/compare/testdata/unformat.api
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
syntax = "v1"
|
||||
|
||||
type Foo struct{}
|
||||
34
tools/goctl/compare/testdata/user.sql
vendored
Normal file
34
tools/goctl/compare/testdata/user.sql
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
-- 用户表 --
|
||||
CREATE TABLE `user`
|
||||
(
|
||||
`id` bigint(10) NOT NULL AUTO_INCREMENT,
|
||||
`user` varchar(50) NOT NULL DEFAULT '' COMMENT '用户',
|
||||
`name` varchar(255) COLLATE utf8mb4_general_ci NULL COMMENT '用户\t名称',
|
||||
`password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户\n密码',
|
||||
`mobile` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',
|
||||
`gender` char(5) COLLATE utf8mb4_general_ci NOT NULL COMMENT '男|女|未公\r开',
|
||||
`nickname` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户昵称',
|
||||
`type` tinyint(1) COLLATE utf8mb4_general_ci DEFAULT 0 COMMENT '用户类型',
|
||||
`create_time` timestamp NULL,
|
||||
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `name_index` (`name`),
|
||||
UNIQUE KEY `name_index2` (`name`),
|
||||
UNIQUE KEY `user_index` (`user`),
|
||||
UNIQUE KEY `type_index` (`type`),
|
||||
UNIQUE KEY `mobile_index` (`mobile`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
CREATE TABLE `student`
|
||||
(
|
||||
`type` bigint NOT NULL,
|
||||
`class` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
|
||||
`name` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
|
||||
`age` tinyint DEFAULT NULL,
|
||||
`score` float(10, 0
|
||||
) DEFAULT NULL,
|
||||
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`type`) USING BTREE,
|
||||
UNIQUE KEY `class_name_index` (`class`,`name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||
Reference in New Issue
Block a user