私は、パッケージを探しに行くのソースコードからファイル.proto生成: proteus (https://github.com/src-d/proteus)
プロテウス/proʊtiəs/あなたの移動の構造体からのプロトコル・バッファーバージョン3つの互換性の.protoファイルを生成するツールである、種類と機能。
このライブラリの背景には、あなたのモデルの真実の源としてGoを使用し、慣用コードを生成しない.protoファイルからGoコードを生成するというものがあります。
この例では、次のよういるProtobufメッセージが生成されますいるProtobufメッセージ
//proteus:generate
type User struct {
Model
Username string
}
type Model struct {
ID int
CreatedAt time.Time
}
を生成します。
message User {
int32 id = 1;
google.protobuf.Timestamp created_at = 2;
string username = 3;
}
完全なプロセスのための2つの要件があります。
go get -v gopkg.in/src-d/proteus.v1/...
要件
をインストールします。
protoc binary installed on your path
go get -u github.com/gogo/protobuf/...
使用
あなたは、あなたの移動タイプに対してRPCクライアントとサーバのインタフェースや、あなたのパッケージのためのRPCサーバの実装をプロト・ファイル、マーシャル/アンマーシャリングといるProtobufものの残りの部分を生成することができます。つまり、プロセス全体です。
protoファイルは、proteusで提供されるコマンドラインツールを使用してのみ生成できます。
proteus proto -f /path/to/output/folder \
-p my/go/package \
-p my/other/go/package
--verbose
パッケージのgRPCサーバー実装のみ生成することもできます。
proteus rpc -p my/go/package \
-p my/other/go/package
注:プロテウスはプラグイン経由で拡張可能になるまでのデフォルトは、ニーズに合わない場合はもちろん、あなたが提供されるコンポーネントを使用して、独自の発電コマンドを一緒にハックすることができます。パッケージのgodocドキュメントを調べてください。
この音は冗談のようです。通常protoから生成され、私はそれを逆さまにする有用なケースを想像することはできません。このような原始的なケースでは、* .protoを直接書くのは問題ではありません。もっと複雑なケース(enum、oneof、...)では、すべてのツールは役に立たない。 – lofcek