https://github.com/sbt/sbt-protobuf
経緯の解説をする
最近何度か書いているように、ScalaでprotobufやgRPCやってる
- protobufのコード渡すとScalaの生成後のソース返すサイトとAPI作ってる
- ScalaからScalaPBというsbt plugin使ってProtocol Bufferを使う方法についてのドキュメントを書いている
- gRPCの公式サンプルをScalaに翻訳した
↓
その自作ドキュメント
http://xuwei-k.github.io/scala-protobuf-docs/
にも説明書いてあるが、sbt-scalapbというpluginが、sbt-protobufというpluginに依存しているという、少し変わった構造
↓
ScalaPBをかなり使って関わってるのだが、sbt-protobufのほうのissueやpull reqがかなり放置気味で困る
↓
- メンテされてないから、sbt-protobufに依存するのやめようか?と提案。 https://github.com/trueaccord/sbt-scalapb/issues/6 sbt-protobuf大したコード量じゃないので、数十行から100行程度(?)をコピペして埋め込めば済む話なので
- 同時に、sbt-protobuf自体は、それなりに綺麗に作られてる(?)し、メンテされされれば別に依存してるのは悪く無いので、再度「メンテする気ないの?」とissueで問い合わせ https://github.com/sbt/sbt-protobuf/issues/36
↓
数日だけ待ったらsbt-protobuf作者から返事くる。忙しいらしい。メンテナーなりたい人いたらwelcomだよ、みたいに言ってくれたので、「メンテナーになりたい」って名乗り出る
↓
コミッターにしてもらえる(githubの権限のこと)
↓
リリースまわり(sbtのbintrayのorganization)がよくわからない。ので、eed3si9nさんに相談
↓
色々方法あるらしいけど、sbtのorgに入れてもらってしまった・・・!?多少権限強すぎる(他のやつも間違ってpublishとか設定変更可能?)だけど、まぁ気をつければいいか・・・
↓
ひとまず早急に0.5.0リリース
- https://github.com/sbt/sbt-protobuf/blob/9c234d9077a9/notes/0.5.0.markdown
- https://bintray.com/sbt/sbt-plugin-releases/sbt-protobuf/0.5.0
ところで新たに作ってしまったが https://bintray.com/sbt/sbt-plugin-releases/sbt-protobuf-imported を再利用したほうがよかったのだろうか・・・?(もう作ってしまったからこっちでやっていくけど)
↓
コンフリクトしてmergeできなかったpull reqを頑張ってmergeしたり、READMEに間違った記述や古い記述があったので整理したり、travis-ci設定などをした
- https://github.com/sbt/sbt-protobuf/pull/20
- https://github.com/sbt/sbt-protobuf/commits/master?author=xuwei-k
↓
その20番のpull req https://github.com/sbt/sbt-protobuf/pull/20 の修正ある程度重要そうなので、早めに次のversion出す予定0.5.1出しました
みたいな感じです。というわけで、出来る限りメンテしていくのでよろしくお願いします。
sbt-protobufはわりとコード量少なくてシンプルですが、sbtのscopeをうまく使ってる(?)例として、コード読んでみるとsbt pluginの勉強的には面白いと思うので、plugin作りたい人には読んでみるの多少オススメです。
ところで、sbt-protobuf自体は( 例のドキュメントにも書いてますが )、単体ではjavaコード生成機能しかないので、ScalaでprotobufやるならScalaPBがおすすめです