pecoのPortfileを書いてみた
さいきんちらほら見かけた、絞り込み選択インターフェイスのコマンドpecoが気になったので試してみた。golangで書かれているので、goでビルドしてやる必要がある。
自分はMacPortsユーザなので、こういう状況になると「とりあえずPortfile書くか」というのがアプローチになるんだけれど、goの作法とかは全然わからない。ありがたいことに本家でhomebrew用のformulaが公開されてるので、それを参考にすればよい。
これでport install pecoで使える(注:本家にはコミットしていません)。標準出力が使えるってのが思ってた以上に強力で、どこでも差し込めるからあれこれ試しててけっこう楽しい。
で、Portfile書きながら、MacPortsとgolang製ツールの相性とかをぼんやりと考えていた。
○良いところ
buildbotが各OSバージョン用のバイナリ作ってくれるので、port:go入れなくてもインストールできる。今回なら${prefix}/bin/pecoだけ取ってくることになる。
また、goのことを知らなくてもインストールできる。ただこれは他のパッケージ管理ツールでも同様。
ちなみにpecoのissueながめてたところ、issue83に「drone.io使えばバイナリ自動ビルドできるよ」的なことが書いてあるので、そもそもそれ使えばよい話かも。
×良くなさそうなところ
今回は`go get`で逃げてるけれども、MacPorts的にはバージョンやタグを指定して、ライブラリも特定のリビジョンをdistfileとして取ってくるようにしたいところ。チェックサムの検証もできるし。
MacPorts自体はdistfilesにtagをつけることで、各distnameをそれぞれのmaster_siteから取ってくる機能があるので実現可能だと思う。
ただgithubのdownloadsがくれる.tar.gzなどはディレクトリにコミットidが入ってたりと使いづらい。それをPortGroup githubが解消してくれるんだけど、複数ファイルには対応してないっぽい。けっこう手を入れないと対応は難しそう。
Portfile書くにあたって、port:goが依存関係に入ってる公式portを検索してみたら、今朝時点ではport:codesearchひとつしかなかった。。
とくに結論とかはありません。