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
より先に見つかるディレクトリーに置けばそっくり入れ替えることができる。