私が歌川です

@utgwkk が書いている

gitignore を落としてくれるシェルスクリプト

手元で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

特徴

単にコマンドを置き換えただけだと面白くないので.特徴を連ねていきます.

wgetcurlの差異を気にしなくてよい

wgetがあればwgetを,なければcurlを,それもなければエラーを出力するようになっているので,この環境はどっちが入っているのかを気にする必要がありません.

必ずgitリポジトリのルートにダウンロードしてくれる

思考停止でコマンドを叩けば.gitignoreをルートディレクトリに落としてくれます.

404でもgitignoreが置き換えられない

wgetcurlのオプションを使ってファイルのダウンロード先を指定しているので,言語名を間違えて 404: Not Found という.gitignoreを作ってしまうことはありません.

今後の課題

言語名の指定がcase-sensitiveである

rubyRuby が異ったものとして扱われるので,常に正しい表記をしなければ正しくダウンロードしてくれません.