mirror of
https://github.com/zeromicro/go-zero.git
synced 2026-05-13 09:50:00 +08:00
refactor goctl-compare (#4290)
This commit is contained in:
1
tools/goctl/compare/.gitignore
vendored
Normal file
1
tools/goctl/compare/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
build
|
||||||
151
tools/goctl/compare/api/test.api
Normal file
151
tools/goctl/compare/api/test.api
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
syntax = "v1"
|
||||||
|
|
||||||
|
@server (
|
||||||
|
group: base
|
||||||
|
)
|
||||||
|
service test {
|
||||||
|
@handler root
|
||||||
|
get /
|
||||||
|
|
||||||
|
@handler ping
|
||||||
|
get /ping
|
||||||
|
|
||||||
|
@handler postRoot
|
||||||
|
post /
|
||||||
|
|
||||||
|
@handler postPing
|
||||||
|
post /ping
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
Subject {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
Grade {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
Class {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
GradeId int64 `json:"gradeId"`
|
||||||
|
Teachers []*Teacher `json:"teachers"`
|
||||||
|
Master {
|
||||||
|
UserId int64 `json:"userId"`
|
||||||
|
Temp bool `json:"temp"`
|
||||||
|
} `json:"master"`
|
||||||
|
}
|
||||||
|
User {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Gender int `json:"gender"`
|
||||||
|
Active bool `json:"active"`
|
||||||
|
Hobby []string `json:"hobby"`
|
||||||
|
}
|
||||||
|
Teacher {
|
||||||
|
UserId int64 `json:"userId"`
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
SubjectId int64 `json:"subjectId"`
|
||||||
|
Class map[int64]*Class `json:"class"`
|
||||||
|
}
|
||||||
|
Student {
|
||||||
|
UserId int64 `json:"userId"`
|
||||||
|
StudentId int64 `json:"studentId"`
|
||||||
|
Number string `json:"number"`
|
||||||
|
ClassId int64 `json:"classId"`
|
||||||
|
SubjectId []int64 `json:"subjectId"`
|
||||||
|
SubjectTop3 [3]int64 `json:"subjectTop3"`
|
||||||
|
Extra map[string]interface{} `json:"extra"`
|
||||||
|
}
|
||||||
|
Base {
|
||||||
|
Code int64 `json:"code"`
|
||||||
|
Msg string `json:"msg"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
LoginReq {
|
||||||
|
Username string `json:"username"`
|
||||||
|
Password string `json:"password"`
|
||||||
|
}
|
||||||
|
LoginResp {
|
||||||
|
Base
|
||||||
|
Data *User `json:"data"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
group: user
|
||||||
|
prefix: /user
|
||||||
|
)
|
||||||
|
service test {
|
||||||
|
@handler login
|
||||||
|
post /login (LoginReq) returns (LoginReq)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
UserInfoReq {
|
||||||
|
Id int64 `path:"id"`
|
||||||
|
}
|
||||||
|
UserInfoResp {
|
||||||
|
Base
|
||||||
|
Data *User `json:"data"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
group: user
|
||||||
|
prefix: /user
|
||||||
|
jwt: JWT
|
||||||
|
middleware: Auth
|
||||||
|
)
|
||||||
|
service test {
|
||||||
|
@handler userInfo
|
||||||
|
post /info/:id (UserInfoReq) returns (UserInfoResp)
|
||||||
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
StudentClassNameListReq {
|
||||||
|
Id int64 `string:"id"`
|
||||||
|
}
|
||||||
|
StudentInfoReq {
|
||||||
|
Id int64 `path:"id"`
|
||||||
|
}
|
||||||
|
SutdentInfoResp {
|
||||||
|
Base
|
||||||
|
Data *Student `json:"data"`
|
||||||
|
}
|
||||||
|
UpdateStudentInfoReq {
|
||||||
|
UserId int64 `form:"userId"`
|
||||||
|
StudentId int64 `form:"studentId"`
|
||||||
|
Number string `form:"number"`
|
||||||
|
ClassId int64 `form:"classId"`
|
||||||
|
SubjectId []int64 `form:"subjectId"`
|
||||||
|
SubjectTop3 [3]int64 `form:"subjectTop3"`
|
||||||
|
Extra map[string]interface{} `form:"extra"`
|
||||||
|
}
|
||||||
|
UpdateSutdentInfoResp {
|
||||||
|
Base
|
||||||
|
Data *Student `json:"data"`
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
@server (
|
||||||
|
group: student
|
||||||
|
prefix: /student
|
||||||
|
jwt: JWT
|
||||||
|
middleware: Auth
|
||||||
|
)
|
||||||
|
service test {
|
||||||
|
@handler studentInfo
|
||||||
|
get /info/:id (StudentInfoReq) returns (SutdentInfoResp)
|
||||||
|
|
||||||
|
@handler updateStudentInfo
|
||||||
|
post /info/update (UpdateStudentInfoReq) returns (UpdateSutdentInfoResp)
|
||||||
|
|
||||||
|
@handler studentClassNameList
|
||||||
|
post /class/name/list (StudentClassNameListReq) returns ([]string)
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package cmd
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/spf13/cobra"
|
|
||||||
"github.com/zeromicro/go-zero/tools/goctl/compare/testdata"
|
|
||||||
"github.com/zeromicro/go-zero/tools/goctl/util/console"
|
|
||||||
)
|
|
||||||
|
|
||||||
var rootCmd = &cobra.Command{
|
|
||||||
Use: "compare",
|
|
||||||
Short: "Compare the goctl commands generated results between urfave and cobra",
|
|
||||||
Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs),
|
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
|
||||||
dir := args[0]
|
|
||||||
testdata.MustRun(dir)
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
func Execute() {
|
|
||||||
if err := rootCmd.Execute(); err != nil {
|
|
||||||
console.Error("%+v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import "github.com/zeromicro/go-zero/tools/goctl/compare/cmd"
|
|
||||||
|
|
||||||
// EXPERIMENTAL: compare goctl generated code results between old and new, it will be removed in the feature.
|
|
||||||
// TODO: BEFORE RUNNING: export DSN=$datasource, the database must be gozero, and there has no limit for tables.
|
|
||||||
// TODO: AFTER RUNNING: diff --recursive old_fs new_fs
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
cmd.Execute()
|
|
||||||
}
|
|
||||||
97
tools/goctl/compare/compare.sh
Normal file
97
tools/goctl/compare/compare.sh
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# local compare test
|
||||||
|
# compare goctl between latest and newest version if exists different.
|
||||||
|
|
||||||
|
execute_command() {
|
||||||
|
local command="$1"
|
||||||
|
|
||||||
|
echo "=> $command"
|
||||||
|
eval "$command"
|
||||||
|
}
|
||||||
|
|
||||||
|
has_diff (){
|
||||||
|
local command="$1"
|
||||||
|
if $command &> /dev/null; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "=======================env init============================="
|
||||||
|
WD=$(readlink -f $(dirname $0))/build
|
||||||
|
BIN=$WD/bin
|
||||||
|
PROJECT_DIR=$WD/project
|
||||||
|
OLD_CODE=$PROJECT_DIR/old
|
||||||
|
NEW_CODE=$PROJECT_DIR/new
|
||||||
|
|
||||||
|
if [ -d $WD ]; then
|
||||||
|
execute_command "rm -rf $WD"
|
||||||
|
fi
|
||||||
|
|
||||||
|
execute_command "mkdir -p $BIN $PROJECT_DIR $OLD_CODE $NEW_CODE"
|
||||||
|
execute_command 'export GOPROXY="https://goproxy.cn,direct"'
|
||||||
|
execute_command "export GOBIN=$BIN"
|
||||||
|
|
||||||
|
echo "=======================install goctl============================="
|
||||||
|
# install latest goctl
|
||||||
|
execute_command "go install github.com/zeromicro/go-zero/tools/goctl@master"
|
||||||
|
execute_command "mv $BIN/goctl $BIN/goctl.old"
|
||||||
|
execute_command "$BIN/goctl.old env"
|
||||||
|
execute_command "$BIN/goctl.old env -w GOCTL_EXPERIMENTAL=on"
|
||||||
|
|
||||||
|
# install newest goctl
|
||||||
|
execute_command "cd .."
|
||||||
|
execute_command "go build -o goctl.new ."
|
||||||
|
execute_command "mv goctl.new $BIN/goctl.new"
|
||||||
|
execute_command "cd -"
|
||||||
|
execute_command "$BIN/goctl.new env"
|
||||||
|
execute_command "$BIN/goctl.new env -w GOCTL_EXPERIMENTAL=on"
|
||||||
|
|
||||||
|
echo "=======================go mod tidy============================="
|
||||||
|
# go mod init
|
||||||
|
execute_command "cd $OLD_CODE"
|
||||||
|
execute_command "go mod init demo"
|
||||||
|
execute_command "cd -"
|
||||||
|
|
||||||
|
execute_command "cd $NEW_CODE"
|
||||||
|
execute_command "go mod init demo"
|
||||||
|
execute_command "cd -"
|
||||||
|
|
||||||
|
echo "=======================generate api============================="
|
||||||
|
execute_command "cd api"
|
||||||
|
# generate api by goctl.old
|
||||||
|
execute_command "$BIN/goctl.old api go --api test.api --dir $OLD_CODE/api"
|
||||||
|
# generate api by goctl.new
|
||||||
|
execute_command "$BIN/goctl.new api go --api test.api --dir $NEW_CODE/api"
|
||||||
|
execute_command "cd -"
|
||||||
|
|
||||||
|
echo "=======================generate rpc============================="
|
||||||
|
execute_command "cd rpc"
|
||||||
|
# generate rpc by goctl.old
|
||||||
|
execute_command "$BIN/goctl.old rpc protoc test.proto --go_out=$OLD_CODE/rpc --go-grpc_out=$OLD_CODE/rpc --zrpc_out=$OLD_CODE/rpc"
|
||||||
|
# generate rpc by goctl.new
|
||||||
|
execute_command "$BIN/goctl.new rpc protoc test.proto --go_out=$NEW_CODE/rpc --go-grpc_out=$NEW_CODE/rpc --zrpc_out=$NEW_CODE/rpc"
|
||||||
|
execute_command "cd -"
|
||||||
|
|
||||||
|
echo "=======================generate model============================="
|
||||||
|
execute_command "cd model"
|
||||||
|
# generate model by goctl.old
|
||||||
|
execute_command "$BIN/goctl.old model mysql ddl --src user.sql --dir $OLD_CODE/cache -c"
|
||||||
|
execute_command "$BIN/goctl.old model mysql ddl --src user.sql --dir $OLD_CODE/nocache"
|
||||||
|
# generate model by goctl.new
|
||||||
|
execute_command "$BIN/goctl.new model mysql ddl --src user.sql --dir $NEW_CODE/cache -c"
|
||||||
|
execute_command "$BIN/goctl.new model mysql ddl --src user.sql --dir $NEW_CODE/nocache"
|
||||||
|
execute_command "cd -"
|
||||||
|
|
||||||
|
echo "=======================diff compare============================="
|
||||||
|
# compare and diff
|
||||||
|
if has_diff "diff -rq $OLD_CODE $NEW_CODE"; then
|
||||||
|
echo "no diff"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "a diff found"
|
||||||
|
execute_command "diff -r $OLD_CODE $NEW_CODE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
wd=`dirname $0`
|
|
||||||
GOBIN="$GOPATH/bin"
|
|
||||||
EXE=goctl-compare
|
|
||||||
go build -o $EXE $wd
|
|
||||||
mv $EXE $GOBIN
|
|
||||||
@@ -4,11 +4,12 @@ CREATE TABLE `user`
|
|||||||
`id` bigint(10) NOT NULL AUTO_INCREMENT,
|
`id` bigint(10) NOT NULL AUTO_INCREMENT,
|
||||||
`user` varchar(50) NOT NULL DEFAULT '' COMMENT '用户',
|
`user` varchar(50) NOT NULL DEFAULT '' COMMENT '用户',
|
||||||
`name` varchar(255) COLLATE utf8mb4_general_ci NULL COMMENT '用户\t名称',
|
`name` varchar(255) COLLATE utf8mb4_general_ci NULL COMMENT '用户\t名称',
|
||||||
|
`age` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT '年龄',
|
||||||
`password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户\n密码',
|
`password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户\n密码',
|
||||||
`mobile` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',
|
`mobile` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',
|
||||||
`gender` char(5) COLLATE utf8mb4_general_ci NOT NULL COMMENT '男|女|未公\r开',
|
`gender` char(5) COLLATE utf8mb4_general_ci NOT NULL COMMENT '男|女|未公\r开',
|
||||||
`nickname` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户昵称',
|
`nickname` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户昵称',
|
||||||
`type` tinyint(1) COLLATE utf8mb4_general_ci DEFAULT 0 COMMENT '用户类型',
|
`type` tinyint(1) COLLATE utf8mb4_general_ci DEFAULT 0 COMMENT '用户类型',
|
||||||
`create_time` timestamp NULL,
|
`create_time` timestamp NULL,
|
||||||
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
@@ -21,14 +22,15 @@ CREATE TABLE `user`
|
|||||||
|
|
||||||
CREATE TABLE `student`
|
CREATE TABLE `student`
|
||||||
(
|
(
|
||||||
`type` bigint NOT NULL,
|
`type` bigint NOT NULL,
|
||||||
`class` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
|
`class` varchar(255) NOT NULL DEFAULT '',
|
||||||
`name` varchar(255) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
|
`name` varchar(255) NOT NULL DEFAULT '',
|
||||||
`age` tinyint DEFAULT NULL,
|
`age` tinyint DEFAULT NULL,
|
||||||
`score` float(10, 0
|
`score` float(10, 0
|
||||||
) DEFAULT NULL,
|
) DEFAULT NULL,
|
||||||
|
`amount` decimal DEFAULT NULL,
|
||||||
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
`update_time` timestamp NULL DEFAULT NULL,
|
`update_time` timestamp NULL DEFAULT NULL,
|
||||||
PRIMARY KEY (`type`) USING BTREE,
|
`delete_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
||||||
UNIQUE KEY `class_name_index` (`class`,`name`)
|
PRIMARY KEY (`type`) USING BTREE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|
||||||
8
tools/goctl/compare/rpc/base/common.proto
Normal file
8
tools/goctl/compare/rpc/base/common.proto
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package common;
|
||||||
|
option go_package="./common";
|
||||||
|
|
||||||
|
message User {
|
||||||
|
string name = 1;
|
||||||
|
}
|
||||||
65
tools/goctl/compare/rpc/test.proto
Normal file
65
tools/goctl/compare/rpc/test.proto
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
// test proto
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package test;
|
||||||
|
|
||||||
|
import "base/common.proto";
|
||||||
|
option go_package = "github.com/test";
|
||||||
|
|
||||||
|
message Req {
|
||||||
|
string in = 1;
|
||||||
|
common.User user = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message Reply {
|
||||||
|
string out = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message snake_req {}
|
||||||
|
|
||||||
|
message snake_reply {}
|
||||||
|
|
||||||
|
message CamelReq{}
|
||||||
|
|
||||||
|
message CamelReply{}
|
||||||
|
|
||||||
|
message EnumMessage {
|
||||||
|
enum Enum {
|
||||||
|
unknown = 0;
|
||||||
|
male = 1;
|
||||||
|
female = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message CommonReply{}
|
||||||
|
|
||||||
|
message MapReq{
|
||||||
|
map<string, string> m = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message RepeatedReq{
|
||||||
|
repeated string id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
service Test_Service {
|
||||||
|
// service
|
||||||
|
rpc Service (Req) returns (Reply);
|
||||||
|
// greet service
|
||||||
|
rpc GreetService (Req) returns (Reply);
|
||||||
|
// case snake
|
||||||
|
rpc snake_service (snake_req) returns (snake_reply);
|
||||||
|
// case camel
|
||||||
|
rpc CamelService (CamelReq) returns (CamelReply);
|
||||||
|
// case enum
|
||||||
|
rpc EnumService (EnumMessage) returns (CommonReply);
|
||||||
|
// case map
|
||||||
|
rpc MapService (MapReq) returns (CommonReply);
|
||||||
|
// case repeated
|
||||||
|
rpc RepeatedService (RepeatedReq) returns (CommonReply);
|
||||||
|
// server stream
|
||||||
|
rpc ServerStream (Req) returns (stream Reply);
|
||||||
|
// client stream
|
||||||
|
rpc ClientStream (stream Req) returns (Reply);
|
||||||
|
// stream
|
||||||
|
rpc Stream(stream Req) returns (stream Reply);
|
||||||
|
}
|
||||||
17
tools/goctl/compare/testdata/kotlin.api
vendored
17
tools/goctl/compare/testdata/kotlin.api
vendored
@@ -1,17 +0,0 @@
|
|||||||
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
470
tools/goctl/compare/testdata/testcase.go
vendored
@@ -1,470 +0,0 @@
|
|||||||
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=.",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
119
tools/goctl/compare/testdata/testdata.go
vendored
119
tools/goctl/compare/testdata/testdata.go
vendored
@@ -1,119 +0,0 @@
|
|||||||
package testdata
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"os"
|
|
||||||
"os/exec"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/gookit/color"
|
|
||||||
"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(color.LightGreen.Render(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, os.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(color.LightBlue.Render("========================goctl.old======================="))
|
|
||||||
must(oldFiles.execute(goctlOld))
|
|
||||||
fmt.Println()
|
|
||||||
fmt.Println(color.LightBlue.Render("========================goctl.new======================="))
|
|
||||||
must(newFiles.execute(goctlNew))
|
|
||||||
}
|
|
||||||
|
|
||||||
func must(err error) {
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalln(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
3
tools/goctl/compare/testdata/unformat.api
vendored
3
tools/goctl/compare/testdata/unformat.api
vendored
@@ -1,3 +0,0 @@
|
|||||||
syntax = "v1"
|
|
||||||
|
|
||||||
type Foo struct{}
|
|
||||||
Reference in New Issue
Block a user