1 Star 0 Fork 0

王超/watchdog

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
gprc.go 3.31 KB
一键复制 编辑 原始数据 按行查看 历史
史努比 提交于 2024-09-09 17:12 . feat:chang path
package grpc
import (
"gitee.com/redefine-code/watchdog/tools"
"github.com/gookit/color"
"github.com/spf13/cobra"
"os"
"os/exec"
"path/filepath"
)
// grpc grpc 生成代码
var (
helpDoc = `grpc :
Descriptions:根据根目录proto文件生成相关grpc代码 proto文件名称为根目录名称.proto 同时支持格式化
Usage
--generate | -g 生成文件
--delete | -d 删除文件
--format | -f 是否格式化proto文件
Example:
watchdog grpc -g -d -f`
HomeDir string
isDelete *bool
isFormat *bool
isGenerate *bool
protoFileExt = ".proto"
etcFileExt = ".yaml"
)
var (
GpCmd = &cobra.Command{
Use: "grpc",
Short: "generate grpc code by proto file from base path or format the proto file",
Long: `generate grpc code by proto file from base path or format the proto file`,
TraverseChildren: true,
RunE: func(cmd *cobra.Command, args []string) error {
run()
return nil
},
}
)
func init() {
//帮助命令
GpCmd.SetHelpFunc(func(command *cobra.Command, strings []string) {
color.Greenln(helpDoc)
})
//标签
isDelete = GpCmd.Flags().BoolP("delete", "d", false, "-d")
isGenerate = GpCmd.Flags().BoolP("generate", "g", false, "-g")
isFormat = GpCmd.Flags().BoolP("format", "f", false, "-f")
// 获取当前用户的home目录,即根目录
GpCmd.MarkFlagsRequiredTogether("delete", "generate")
HomeDir, _ = os.Getwd()
}
func run() {
if *isGenerate {
// goctl rpc protoc --style goZero $protoName --go_out=. --go-grpc_out=. --zrpc_out=. -m
baseDir := filepath.Base(HomeDir)
protoFileName := baseDir + protoFileExt
filePath := tools.BuildPath(HomeDir, protoFileName)
isExist, _ := tools.FileIsExist(filePath)
if !isExist {
color.Redln(filePath + ":is not exist")
os.Exit(1)
}
// 执行shell命令
cmd := exec.Command("/bin/bash", "-c", "goctl rpc protoc --style goZero "+protoFileName+" --go_out=. --go-grpc_out=. --zrpc_out=. -m")
// 运行命令并获取输出
_, err := cmd.CombinedOutput()
if err != nil {
color.Redf("generate grpc err:%s", err)
}
if *isDelete {
//grpc 客户端目录
clientDir := tools.BuildPath(HomeDir, "/client")
//默认的配置文件
etcFile := tools.BuildPath(HomeDir, "etc", baseDir) + etcFileExt
//internal下的config目录
internalConfigDir := tools.BuildPath(HomeDir, "internal", "config")
if err := tools.DelDir(clientDir); err != nil {
color.Redln("删除目录失败", err)
os.Exit(1)
}
if err := tools.DelDir(internalConfigDir); err != nil {
color.Redln("删除目录失败", err)
os.Exit(1)
}
if err := tools.DelFile(etcFile); err != nil {
color.Redln("删除文件失败", err)
os.Exit(1)
}
}
}
if *isFormat {
baseDir := filepath.Base(HomeDir)
protoFileName := baseDir + protoFileExt
filePath := tools.BuildPath(HomeDir, protoFileName)
isExist, _ := tools.FileIsExist(filePath)
if !isExist {
color.Redln(filePath + ":is not exist")
os.Exit(1)
}
// 执行shell命令
cmd := exec.Command("/bin/bash", "-c", `clang-format -style="{BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 0, AlignConsecutiveAssignments: true}" -i `+filePath)
// 运行命令并获取输出
_, err := cmd.CombinedOutput()
if err != nil {
color.Redf("format %s err:%s by clang", protoFileName, err)
}
}
color.Greenln("Done")
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/redefine-code/watchdog.git
git@gitee.com:redefine-code/watchdog.git
redefine-code
watchdog
watchdog
v1.0.1

搜索帮助

0d507c66 1850385 C8b1a773 1850385