手元でgitリポジトリを作ったときに,よく wget https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore -O .gitignore
などのコマンドを打つのですが,環境によってwgetがなくてcurlだったり,そもそもgitリポジトリのルートディレクトリじゃなかったりすることがあります.
GitHubで作ったリポジトリだと最初からよしなにしてくれるのですが,手元でふとgitリポジトリを作ったときはそうもいかないものです.
Git Bashだとwgetがなくてイラつくなどもよく発生します.
ということでシェルスクリプトです.
使い方としては, gitignore.sh Python
のように言語名を引数に渡してやると自動でダウンロードしてくれます.
#!/bin/sh LANGUAGE=$1 if [ -z "$LANGUAGE" ]; then echo "Usage: gitignore.sh <language name>" >&2 exit 2 fi GIT_BASE_DIR=`git rev-parse --show-toplevel` DEST=$GIT_BASE_DIR/.gitignore GITIGNORE_BASE_URL="https://raw.githubusercontent.com/github/gitignore/master" DOWNLOAD_URL=$GITIGNORE_BASE_URL/$LANGUAGE.gitignore if which wget > /dev/null 2>&1; then if ! wget $DOWNLOAD_URL -O $DEST; then echo "ERROR: cannot download $LANGUAGE.gitignore" >&2 exit 1 fi elif which curl > /dev/null 2>&1; then if ! curl -f $DOWNLOAD_URL -o $DEST; then echo "ERROR: cannot download $LANGUAGE.gitignore" >&2 exit 1 fi else echo "ERROR: either wget or curl is required." >&2 exit 1 fi
特徴
単にコマンドを置き換えただけだと面白くないので.特徴を連ねていきます.
wgetとcurlの差異を気にしなくてよい
wgetがあればwgetを,なければcurlを,それもなければエラーを出力するようになっているので,この環境はどっちが入っているのかを気にする必要がありません.
必ずgitリポジトリのルートにダウンロードしてくれる
思考停止でコマンドを叩けば.gitignoreをルートディレクトリに落としてくれます.
404でもgitignoreが置き換えられない
wgetとcurlのオプションを使ってファイルのダウンロード先を指定しているので,言語名を間違えて 404: Not Found
という.gitignoreを作ってしまうことはありません.
今後の課題
言語名の指定がcase-sensitiveである
ruby
と Ruby
が異ったものとして扱われるので,常に正しい表記をしなければ正しくダウンロードしてくれません.