`gitignore`を毎回作ったりするのがめんどくさいので楽したい 😇

プログラミングスクールで課題の提出物をGitHubリポジトリを作って提出する場面があり、これが数ヶ月に一度とかその程度の頻度であれば、GitHubが公開しているリポジトリを見に行って、ignoreしたい言語のテンプレートを探してコピペとかしてもいいかなと思う。
しかし、結構な頻度で新しいリポジトリを作って提出するのでさすがにめんどくさい。
いや、そうでなくてもめんどくさい。普通にめんどくさいよ。

そんなことを思って、楽に.gitignoreファイルを作る方法はないものか、我々はインターネットと言われるアマゾンの奥地(以下略)。

giboというシェルスクリプトのツールを見つけた。

github.com

github/gitignore: A collection of useful .gitignore templatesで公開しているテンプレートを参照して自分の.gitignoreに突っ込んでくれるらしい。

使い方 ✏️

公式のREADMEに詳しく書かれているから、書かれているとおりにインストールすれば使えるようになる。
が、自分の環境ではインストールしてそのままgibo --versionとかしても動かなかった。
もしかしたらこの時点でzshを再ログインすればよかったのかも知れない…なんて、今になって思うけど再ログインしても動かなかったときのためにメモとして対処法を残しておく。

インストールしてもcommand not foundとかで動かないときの対処法

これについても公式のREADMEに書かれている。

zsh instructions

Copy gibo-completion.zsh somewhere in your $fpath. The convention for autoloaded functions used in completion is that they start with an underscore, so I suggest you rename it to _gibo.

gibo-completion.zshをコピーして使ってくれって書いてある。
書かれている通り素直にインストールされたパッケージからcpなりでコピーしても良かったけど、なんとなく同じファイルが2つ存在するのは気持ち悪いなと思った。(お絵描きや同人誌の漫画のデータファイルは平気で2つ以上残してることは完全に棚上げ)

$fpathのどこかしらに、パッケージの中にあるgibo-completion.zshシンボリックリンクを作れば使えるっぽいなと考えた。
echo $fpathでコマンドのシンボリックリンクがまとまってそうな場所を探す。
/usr/local/share/zsh-completionsにyarnとかbrewでインストールしたツールのコマンドがまとまってそうだったので、ここにシンボリックリンクを作成した。

/u/l/s/zsh-completions
❯❯❯ % ln -s ../../Cellar/gibo/2.2.4/share/zsh/site-functions/_gibo _gibo
# zshの再ログイン
❯❯❯ % exec $SHELL -l

シンボリックリンクを作成したら、zshの再ログインを実行して、試しにgibo --versionしてみる。

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

Fetches gitignore boilerplates from https://github.com/github/gitignore

Usage:
    gibo [command]

Example:
    gibo dump Swift Xcode >> .gitignore

Commands:
    dump BOILERPLATE...   Write boilerplate(s) to STDOUT
    help                  Display this help text
    list                  List available boilerplates
    root                  Show the directory where gibo stores its boilerplates
    search STR            Search for boilerplates with STR in the name
    update                Update list of available boilerplates
    version               Display current script version

よしよし、ちゃんと動きました。

出てきたExampleを参考に使ってみる。
あらかじめtouch .gtignoreして、ファイルを作っておく。

❯❯❯ % gibo dump Node >> .gitignore

catでちゃんと無視ファイルが追加されているか確認してみると

❯❯❯ % cat .gitignore
### https://raw.github.com/github/gitignore/218a941be92679ce67d0484547e3e142b2f5f6f0/Node.gitignore

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

お〜〜、入っとる入っとる。

これでgit initする度にコピペしたりとかいうめんどい作業がなくなる。
めでたしめでたし。

📝 参考

giboにたどり着く過程で参考にした記事 🙏

gitignore の使い方 · GitHub

qiita.com