scss-lint.sh

SCSS Lintがv0.34.0から設定ファイルを上流から探さなくなった。カレント・ディレクトリーから探して見つからなかったらユーザーのホーム・ディレクトリーから探すようにはったようだが、プロジェクトのルート・ディレクトリーから探すようにはならないようだ。イシューを立てようかと思ったのだけど上流から探す機能をわざわざ削除したことの意味を調べるのが面倒くさかったので、シェル・スクリプトからプロジェクトのルート・ディレクトリーに.scss-lint.ymlがある場合はそれを使うようなラッパー・スクリプトを書くことにした。

#!/bin/sh

b=${GEM_HOME}/bin/scss-lint
r=`git rev-parse --show-cdup 2>/dev/null`
c=${r}.scss-lint.yml

if [ $? -eq 0 ] && [ -e $c ]; then
  ${b} -c ${c} $*
else
  ${b} $*
fi

Gitのrev-parseサブコマンドで--show-cdupを使うと、.gitディレクトリーのあるディレクトリー、つまりプロジェクトのルート・ディレクトリーまでの相対パスが取得できる。これと.scss-lint.ymlを連結してファイル・テスト演算子で存在チェックし、あった場合は-c (--config)オプションで設定を渡してやるようにする。オリジナルのscss-lintの実行ファイルは$GEM_HOMEから探す。

このシェル・スクリプトscss-lintという名前をつけて、パスの通ったディレクトリーかつ$GEM_HOME/bin/scss-lintより先に見つかるディレクトリーに置けばそっくり入れ替えることができる。