ちなみに

火曜日の空は僕を押しつぶした。

コンソールで起こったことを通知センターに表示した話

f:id:Sixeight:20150423134910p:plain

概要

最近 Scala で Play Framework を使った開発をやっていて、裏で SBT を動かしながら、開発をしている。変更点があった場合には自動的にサーバーを再起動してくれるのだけれど、Scala なのでコンパイルが走る。エラーになったのかコンパイル中なのかが分からないことがあるので、いちいちコンソールを見に行っていて大変不毛だったので通知するようにした。

まとめ

  • iTerm2 の Trigger なら正規表現で出力を監視してなんらかのアクションを行える
  • display notification で簡単に通知を送れる
  • コンパイルっぽいのとか Play がリスタートしたのを監視して雑に通知

説明

project/Build.scala に通知系のものを追加しないといけないかなと思っていたのだけれど、iTerm2 の Trigger だとめっちゃ簡単だった。各所で解説されているけれど、Trigger を使うとコンソールに表示された文字列を正規表現で監視して、特定のコマンドを実行できたりできる。これを使ってコンパイル始まったら、コンパイル始まったって通知を出すようにした。

ところで実は先駆者がいらして、これを参考にさせてもらいつつやりました。
Only 1 truth: SBTでコンパイル完了後に通知する

通知部分はシュッと追加できるように AppleScriptdisplay notification を使ってやることにした。

echo 'display notification "[悲報] コンパイルが始まった" with title "開発"' | osascript

みたいに書くと以下のような通知を送れる。

f:id:Sixeight:20150423135830p:plain

Trigger には例えば以下のようなのを作っておくと、コンパイルが始まったタイミングで「[悲報] 213ファイルのコンパイルが始まってつらい」みたいなのが通知センターに表示される。

正規表現 アクション パラメーター
[info] Compiling (\d+) Scala source Run Command... echo 'display notification "[悲報] \1ファイルのコンパイルが始まってつらい" with title "開発"'|osascript

ハイライトとかも出来るので特定の文字列を見逃したくないときにもべんり。

その他

  • テストはその文字を echo すると出来る。たとえば echo "[info] Compiling 213 Scala source" とやればOK。
  • コンソールに表示されるだけで反応するので上のテストをやったあとに履歴を辿ると通知が出まくる