kakakakakku blog

Weekly Tech Blog: Keep on Learning!

gibo コマンドを使って .gitignore のテンプレートを簡単に作成する

ブログに載せるサンプルコードを管理したり,仕事でプロトタイプを実装することが多かったり,とにかく Git リポジトリを新しく作る機会が多くある.そのときに毎回似たような .gitignore を作ることになり,面倒だった.共通的な設定はホームディレクトリの ~/.gitignore を使っているけど,同僚とコードを共有することもあり,やはりリポジトリ単位に .gitignore を作成したかった.この運用を軽減するために使っているツールとして,今回は .gitignore のテンプレート(ボイラープレート)を簡単に作成できる「gibo」を紹介する.

gibo とは?

「gibo (short for .gitignore boilerplates)」 を使うと,例えば Python や Ruby など,プログラミング言語ごとに用意された .gitignore のテンプレートを簡単に作成できる.正確に表現すると,GitHub のリポジトリ github/gitignore に公開されているテンプレートを gibo コマンドを使って取得できる.よって,ラッパーコマンドのような立ち位置と言える.非常に便利でよく使っている.

github.com

github.com

gibo をインストールする

Mac なら brew コマンドを使えば,簡単にインストールできる.今回は最新版 v2.2.4 を前提にする.

$ brew install gibo

$ gibo version
gibo 2.2.4 by Simon Whitaker <sw@netcetera.org>
https://github.com/simonwhitaker/gibo

もし,ローカル環境にインストールしたくない場合は,Docker を使う案もある.

$ docker run --rm simonwhitaker/gibo version
gibo 2.2.4 by Simon Whitaker <sw@netcetera.org>
https://github.com/simonwhitaker/gibo

gibo を使う

基本的には gibo dump コマンドを使って,標準出力をリダイレクトする.以下のように gibo dump Python とすれば,Python 用の .gitignore を作成できるし,gibo dump Python macOS のようにスペース区切りで複数指定すれば,Python と Mac 用の .gitignore を作成できる.ほら .DS_Store を間違ってコミットしちゃった経験は誰にでもあるよね?笑

$ gibo dump Python >> .gitignore
$ gibo dump Python macOS >> .gitignore

Docker を使う場合は,以下のように docker run をすれば OK!

$ docker run --rm simonwhitaker/gibo dump Python >> .gitignore
$ docker run --rm simonwhitaker/gibo dump Python macOS >> .gitignore

タブ補完をする

gibo「タブ補完」もサポートしている.README.mdbash / zsh / fish の設定が載っているけど,僕は oh-my-zsh を使っているため,Wiki を参考に oh-my-zsh の設定を紹介する.以下のように plugins/gibo ディレクトリを作成して,GitHub に公開されている gibo-completion.zsh にシンボリックリンクを貼るだけ!簡単!gibo-completion.zsh は任意のディレクトリに置いておけばよくて,僕は dotfiles の中に置いてある.設定が終わったら,zsh をリロードしておくのを忘れずに!

$ mkdir -p ${ZSH}/custom/plugins/gibo/
$ ln -s ~/dotfiles/gibo-completion.zsh ${ZSH}/custom/plugins/gibo/gibo.plugin.zsh

以下のように gibo [tab] と入力すれば,コマンドが表示されるし,gibo dump P [tab] と入力すれば,P にマッチするテンプレートを補完できる.便利だし,むしろ使えないと困る!

$ gibo [tab]
dump     -- Dump one or more boilerplates
help     -- Display this help text
list     -- List available boilerplates
root     -- Show the directory where gibo stores its boilerplates
search   -- Search for boilerplates
update   -- Update list of available boilerplates
version  -- Display current script version

$ gibo dump P [tab]
PSoCCreator    Perl           Pimcore        Prestashop     Puppet
Packer         Phalcon        PlayFramework  Processing     PureScript
Patch          Phoenix        Plone          PuTTY          Python

他にもコマンドはある

gibo dump コマンド以外だと,例えば gibo list コマンドを使うと,サポートしているテンプレートの一覧を確認できる.とは言え,さっき紹介した「タブ補完」を設定すれば gibo dump [tab] と入力すれば良く,個人的にはあまり使っていなかったりする.

$ gibo list
Actionscript        Dart            NetBeans        Node
Ada         Delphi          Ninja           Objective-C
Agda            DM          NotepadPP       OCaml
(省略)

gibo root コマンドを使うと,GitHub のリポジトリ github/gitignoreclone したディレクトリを確認できる.ようするに,テンプレートはローカルにコピーされている.すると,今度はテンプレート自体の更新をどのようにするのか?という点が気になると思う.gibo update コマンドを使えば,簡単に最新に追随できる.

$ gibo root
/Users/kakakakakku/.gitignore-boilerplates

$ ls -1 /Users/kakakakakku/.gitignore-boilerplates | wc -l
     132

$ gibo update
From github.com:github/gitignore
 * branch            master     -> FETCH_HEAD
Already up to date.

まとめ

もし GitHub のリポジトリ github/gitignore からコピーして .gitignore を作成している場合は,gibo を使ってシュッと .gitignore を作成すると便利!使うときは「タブ補完」も忘れずに設定しておくと良いぞ!

github.com