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=$HOME
ghq
で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”にまとめられている.最近,別レポジトリもつくられたようなので,これからもっと増えそうだなと眺めている.