tl; dr Репо, ранее настроенное для использования GOPATH
, теперь настроено для модулей. Все хорошо и лучше. Однако protoc правильно (!) Генерирует код Golang для protobuf, определенных в репозитории в структуре github.com/path/to/repo/protos
, когда я предпочел бы, чтобы они генерировались в моих источниках, за исключением GOPATH
. Я перемещаю их, чтобы решить это. Есть ли лучшее решение?
У меня есть репозиторий на GitHub. Для обсуждения давайте назовем это github.com/acme/toolbox
. В подкаталоге у меня есть файлы protobuf, которые включают:
package acme.toolbox.v1;
option go_package = "github.com/acme/toolbox/protos";
Когда я был GOPATH
, все было хорошо, и protoc
генерировал бы привязки Голанга в $GOPATH/src/github.com/acme/toolbox/protos
, и мой код, импортирующий pb "github.com/acme/toolbox/protos"
, работал бы.
Переход на Модули Go не безболезненен, но преимущества перевешивают стоимость, и я проверяю будущее и себя, и код.
Моя проблема в том, что я не понимаю, как заставить protoc
генерировать привязки Голанга в произвольно и вне GOPATH
расположенного клона.
Я перемещаю файлы после того, как они сгенерированы, но это кажется ... неэлегичным:
cd ${TOOLBOX}
protoc \
--proto_path=./protos \
--go_out=plugins=grpc:/go/src
./protos/*.proto
mv ${GOPATH}/src/github.com/acme/toolbox/protos/*.go ${TOOLBOX}/protos
Есть ли лучшее решение?