【问题标题】:Go validation using envoy proxy validator and gogo protobuf使用 envoy 代理验证器和 gogo protobuf 进行验证
【发布时间】:2021-08-18 12:52:18
【问题描述】:

我正在尝试编写插件来生成验证 go 文件。它使用https://github.com/mwitkow/go-proto-validators 和特使代理验证器https://github.com/envoyproxy/protoc-gen-validate。下面是我的命令

protoc  \
--proto_path=${GOPATH}/src \
--proto_path=${GOPATH}/pkg/mod/github.com/gogo/protobuf@v1.3.2 \
--proto_path=${GOPATH}/pkg/mod/github.com/envoyproxy/protoc-gen-validate@v0.1.0
--proto_path=. \
--gogo_out=. \
—-validate_out=“lang=go:.\”
--govalidators_out=gogoimport=true:. \
proto/*.proto

当我运行上面的命令时,我得到以下错误?任何有关如何解决此问题的建议专家。感谢您的帮助。

zsh: command not found: --proto_path=.
zsh: command not found: --govalidators_out=gogoimport=true:. 

添加缺少的“/”后

protoc  \
--proto_path=${GOPATH}/src \
--proto_path=${GOPATH}/pkg/mod/github.com/gogo/protobuf@v1.3.2 \
--proto_path=${GOPATH}/pkg/mod/github.com/envoyproxy/protoc-gen-validate@v0.1.0 \
--proto_path=. \
--gogo_out=. \
-—go_out=":./generated" \
—-validate_out="lang=go:./generated" \
--govalidators_out=gogoimport=true:. \
proto/test.proto

我收到 未知标志:-?

【问题讨论】:

    标签: go protocol-buffers proto


    【解决方案1】:

    您在 get-validate 之后错过了 \ 以及之后...

    protoc  \
    --proto_path=${GOPATH}/src \
    --proto_path=${GOPATH}/pkg/mod/github.com/gogo/protobuf@v1.3.2 \
    --proto_path=${GOPATH}/pkg/mod/github.com/envoyproxy/protoc-gen-validate@v0.1.0 \
    --proto_path=. \
    --gogo_out=. \
    —-validate_out="lang=go:." \
    --govalidators_out=gogoimport=true:. \
    proto/*.proto
    

    【讨论】:

    • 感谢我相应地修改了我的命令。现在得到未知标志:-?对此有任何建议
    • 我建议您删除所有标志(或其中一半)以找到protoc 未知的标志。很可能缺少命令中提供的插件之一(如果不是全部)。
    • 我很抱歉我不明白我是 Go 新手。你在这里指的是什么标志
    • 您传递给protoc 的每个值,在您的示例中,它们都以-- 开头,--proto_path 是(让我们称之为)“原生”到 protoc,而@987654327 @、govalidators_outgogo_out 不是。插件不是原生提供的(您发布了两个链接。其中一些没有找到,我猜您忘记安装它们(请参阅每个插件 github 页面上的说明)。
    猜你喜欢
    • 2019-09-30
    • 2017-11-24
    • 2019-01-31
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    相关资源
    最近更新 更多