概要
最近 Scala で Play Framework を使った開発をやっていて、裏で SBT
を動かしながら、開発をしている。変更点があった場合には自動的にサーバーを再起動してくれるのだけれど、Scala なのでコンパイルが走る。エラーになったのかコンパイル中なのかが分からないことがあるので、いちいちコンソールを見に行っていて大変不毛だったので通知するようにした。
まとめ
- iTerm2 の Trigger なら正規表現で出力を監視してなんらかのアクションを行える
display notification
で簡単に通知を送れる- コンパイルっぽいのとか Play がリスタートしたのを監視して雑に通知
説明
project/Build.scala
に通知系のものを追加しないといけないかなと思っていたのだけれど、iTerm2 の Trigger だとめっちゃ簡単だった。各所で解説されているけれど、Trigger を使うとコンソールに表示された文字列を正規表現で監視して、特定のコマンドを実行できたりできる。これを使ってコンパイル始まったら、コンパイル始まったって通知を出すようにした。
ところで実は先駆者がいらして、これを参考にさせてもらいつつやりました。
Only 1 truth: SBTでコンパイル完了後に通知する
通知部分はシュッと追加できるように AppleScript の display notification を使ってやることにした。
echo 'display notification "[悲報] コンパイルが始まった" with title "開発"' | osascript
みたいに書くと以下のような通知を送れる。
Trigger には例えば以下のようなのを作っておくと、コンパイルが始まったタイミングで「[悲報] 213ファイルのコンパイルが始まってつらい」みたいなのが通知センターに表示される。
正規表現 | アクション | パラメーター |
---|---|---|
[info] Compiling (\d+) Scala source | Run Command... | echo 'display notification "[悲報] \1ファイルのコンパイルが始まってつらい" with title "開発"'|osascript |
ハイライトとかも出来るので特定の文字列を見逃したくないときにもべんり。
その他
- テストはその文字を
echo
すると出来る。たとえばecho "[info] Compiling 213 Scala source"
とやればOK。 - コンソールに表示されるだけで反応するので上のテストをやったあとに履歴を辿ると通知が出まくる