Ghq + Percol + Docc
各プロジェクトのディレクトリをどのように管理するかってのは長年の悩みだった.
Go言語を使うようになるとそのシンプルなディレクトリ構成が自分の中で1つの最適な解となった.GithubやGoogle Codeにソースをホストすることが前提となっている今,ホスト名・ユーザ名・プロジェクト名によるGoのディレクトリ構成はどのようなプロジェクトでも通用する.そのため,最近は,社内のプロジェクトを含め,すべてプロジェクトディレクトリをGoの作法に従うように管理するようになった.
そして,以下の記事に出会った.
- Rebuild: 42: When in Golang, Do as the Gophers Do (lestrrat)
- ghq: リモートリポジトリのローカルクローンをシンプルに管理する - 詩と創作・思索のひろば (Poetry, Writing and Contemplation)
- ghqを使ったローカルリポジトリの統一的・効率的な管理について - delirious thoughts
- ターミナル版anything的なpercolをzawの代わりに試してみた - $shibayu36->blog;
まとめると,
export GOPAHT=$HOMEghqでGo以外のプロジェクトもGoの作法で$GOPATH/srcに集約percolで効率的なディレクトリの検索・移動
かなりライフチェンジング.とてもシンプルになった.
docc
さらに進めてdoccというコマンドを作った.
これは指定したプロジェクトのGithubページ,もしくはREADME.mdを開くコマンド.単独でもさらっとプロジェクトのドキュメントを参照するのに使える.
これをghqとpercolと組み合わせる.例えば,以下のようなpercolスクリプトを作る.
1 2 3 4 5 6 7 8 9 10 11 | |
すると,例えば上のgifのように^Oで,ghqで集約したプロジェクトをpercolで検索して,そのプロジェクトのGithubページをブラウザで開くということが可能になる.
インストールは以下.
1 2 | |
dockerのGoパッケージ
doccはGo言語で書いた.その際,dockerが内部で独自に作っているmflagパッケージを使った.これは,標準パッケージのflagを改良したもので,より柔軟な引数処理の作成ができる(例えば,1つのオプションに複数のオプション名を持たせることができるとか).
このようにdockerは別のプロジェクトでも使える便利Goパッケージをdotcloud/docker/pkgに持っている.詳しくは,“the lost packages of docker”にまとめられている.最近,別レポジトリもつくられたようなので,これからもっと増えそうだなと眺めている.