やりたいこと
・protoファイルをプロジェクトルート直下ではなくサブディレクトリの中で管理したい
・protoファイルからprotocコマンドで生成させるpb.goファイルを、protoファイルと同じ階層に置きたい
環境等
go1.16.6
github.com/mwitkow/go-proto-validators v0.3.2
github.com
前提
・以下のフォルダ構造とします
(プロジェクトルート(自分の環境だとgin-studyというフォルダ))
└grpc
└gin-study.proto
・protoファイルの中身はこんな感じ
syntax = "proto3"; option go_package = "github.com/Tiratom/gin-study/grpc"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; import "github.com/mwitkow/go-proto-validators/validator.proto"; (以下後略)
手順
① ターミナルでecho $GOPATH
を実行してGOPATHの値を確認する
Users/【名前】/go
って感じの値が返ってくると思います
②validator.protoファイルを用意する
2-1. go-proto-validators/validator.proto at master · mwitkow/go-proto-validators · GitHub からvalidator.protoファイルの中身をコピーする
2-2. /Users/【名前】/go/src/github.com/mwitkow/go-proto-validators/validator.proto
の位置になるようにvalidator.protoファイルを作成する
2-3. 2-1でコピーした中身を、2-2で用意したファイルの中にペーストする
※補足
・go-prot-validatorの公式のREADMEの手順でprotocコマンドを実行すると、以下のエラーが発生してしまいました
gin-study.proto:7:1: Import "github.com/mwitkow/go-proto-validators/validator.proto" was not found or had errors.
そこで、こちらを参考にこの2-1〜2-3の手順を実行しています
qiita.com
(記事で言及されているように、注意点があることに注意です・・・注意点を対処できる方法はわかりませんでした・・)
③ 以下コマンドをプロジェクトルートで実行
$ protoc --proto_path=${GOPATH}/src --proto_path=:./grpc --go_out=plugins=grpc:./grpc --go_opt=module=github.com/Tiratom/gin-study/grpc --govalidators_out=paths=source_relative:./grpc ./grpc/gin-study.proto
④ 生成物を確認
gin-study(プロジェクトルート)
└grpc
┣gin-study.proto
┣gin-study.pb.go
└gin-study.validator.pb.go