Пройдите проверку с помощью валидатора прокси-сервера посланника и gogo protobuf

# #go #protocol-buffers #proto

Вопрос:

Я пытаюсь написать плагин для создания файлов проверки 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
 

Я получаю Неизвестный флаг: -?

Ответ №1:

вы пропустили после получения-подтверждения и позже…

 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
 

Комментарии:

1. спасибо, я соответствующим образом изменяю свою команду. Теперь появляется неизвестный флаг: -? любые предложения по этому поводу

2. Я предлагаю вам удалить все флаги (или половину из них), чтобы найти один неизвестный protoc . Вполне возможно, что один из плагинов, представленных в команде, отсутствует (если не все).

3. Прошу прощения, я не понял, что я новичок в этом деле. Какие флаги вы имеете в виду здесь

4. каждое из значений , которые вы передаете protoc , в вашем примере все они начинаются с -- , --proto_path является (давайте назовем это) «родным» для протокола, в то время validate_out govalidators_out как и gogo_out не являются. не родной, поставляемый плагинами (вы разместили две ссылки. Некоторые из них не найдены, я думаю, вы забыли их установить (см. Инструкции на каждой из страниц плагинов github).