build.sbt の変更を検知する sbt プラグインを作りました

git でブランチを切り替えたらうまくビルドできなくなって困ったけど、build.sbt が変わっているのに sbt の reload をするのを忘れていただけだった、ということがたまに起こります。これを防ぐために、.sbt や project/.scala が変更されていたら警告を表示する sbt プラグインを作りました。

tototoshi/sbt-build-files-watcher

作りました、というかよしださんの https://gist.github.com/xuwei-k/6278769 をだいたいパクった感じです。

インストールはプロジェクトごとに設定するよりはグローバルの設定にすると便利だと思います。

~/.sbt/0.13/plugins/build.sbt

addSbtPlugin("com.github.tototoshi" % "sbt-build-files-watcher" % "0.1.1")

~/.sbt/0.13/build.sbt

showMessageOnBuildFilesChanged

sbt-git などを使っている場合は showMessageOnBuildFilesChanged が sbt-git のshowCurrentGitBranch とぶつかるので messageOnBuildFilesChanged という関数を使って shellPrompt キーを設定します。

shellPrompt := { state =>
  messageOnBuildFilesChanged(state) + GitCommand.prompt(state)
}

これで .sbt や project/.scala を編集すると reload しろという警告が出るようになります。めでたし。

f:id:tototoshi:20150131000659p:plain