App::trigger進捗
App::triggerというモジュールを書いています。 - Life is very short
数カ月前に書いて放置していたものを、ちゃんとしたものにしようと
いうことで最近また書いています。
目的
iTermのトリガ機能を実現し、以下のようなことをお手軽に実現する。
変更点
- デフォルトコンフィギュレーションファイル(~/.ptrigger)の削除
- '-t', '--tail'オプションを '-f', '--follow'に変更
- コマンドラインオプションでの、色付け、アクション指定の対応
- trigger(action)関数への引数渡しの対応
- コンフィギュレーションファイルの regexpパラメータを patternに変更
- バグフィックス
コマンドラインオプションの対応
'-m', '--match'オプションで "パターン:色属性:アクション(コマンド)"という形で
指定します。HTTPのステータスを色付けだけする場合は以下のような具合です。
% ptrigger -m '\b2\d{2}\b:cyan,bold' \ -m '\b3\d{2}\b:green,bold' \ -m '\b4\d{2}\b:red,bold,on_yellow,underline' \ -m '\b5\d{2}\b:red,bold' < sample.log
注意
コマンドラインオプションで指定する場合、パターンに ":"を直接
含めることができません。8進数表記(072)、16進数表記(0x3A)で
指定する必要があります。ASCIIコードについては 'man ascii'を
参照してください
trigger(action)関数への引数渡しの対応
第一引数にパターンにマッチした文字列、第二引数以降にパターンの中で
キャプチャされた文字列が trigger関数に渡されるようになりました。
コンパイルの警告メッセージを色付け+下線を引きつつ、それをポップアップ
するという例を以下に示します。
コンフィグファイル
+{ warning => { pattern => qr/warning: \s* (.+)$/x, color => [qw/magenta underline/], action => sub { my ($matched, $warn_str) = @_; my @cmd = (qw/notify-send -t 5000/, "Compiler Warning", $warn_str); exec @cmd or die "Can't exec: $!"; }, }, };
実行
% LANG=C gcc test.c 2>&1 | ptrigger -c trigger2.conf
おわりに
近いうちに PrePANに出して、CPANに上げれたらいいかなと思います。
それまでもう少し問題がないか確認します。