手元でgitリポジトリを作ったときに,よく wget https://raw.githubusercontent.com/github/gitignore/master/Python.gitignore -O .gitignore
などのコマンドを打つのですが,環境によってwgetがなくてcurlだったり,そもそもgitリポジトリのルートディレクトリじゃなかったりすることがあります.
GitHubで作ったリポジトリだと最初からよしなにしてくれるのですが,手元でふとgitリポジトリを作ったときはそうもいかないものです.
Git Bashだとwgetがなくてイラつくなどもよく発生します.
ということでシェルスクリプトです.
使い方としては, gitignore.sh Python
のように言語名を引数に渡してやると自動でダウンロードしてくれます.
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があればwgetを,なければcurlを,それもなければエラーを出力するようになっているので,この環境はどっちが入っているのかを気にする必要がありません.
必ずgitリポジトリのルートにダウンロードしてくれる
思考停止でコマンドを叩けば.gitignoreをルートディレクトリに落としてくれます.
404でもgitignoreが置き換えられない
wgetとcurlのオプションを使ってファイルのダウンロード先を指定しているので,言語名を間違えて 404: Not Found
という.gitignoreを作ってしまうことはありません.
今後の課題
ruby
と Ruby
が異ったものとして扱われるので,常に正しい表記をしなければ正しくダウンロードしてくれません.