前回に引き続き IRCネタです。
IRCサーバーを作った時と同じぐらいの時期に、
をつくりました。
これを作ったきっかけは、SVNでコミット時にメールを送るのに、commit-email.pl を使ってましたが、
こまめにコミットすると、メールに埋もれてしまう~。
という事で、trunk にマージした時のみメールで送る様にし、それ以外は IRCに流そうと思ったわけです。
元ネタは、coderepos のcodereposbot で、codereposbot は コミット時にログを流していたので同じ事を考えました。
で、
commit-email.pl を trunk にコミットした時だけ IRCに情報を流すように少々手を加えます。
その時、バッチ(commit-email.pl)から IRC に手軽に流したいな~。でも。コミットの時だけ IRCに
IRCbotが join して~とかなると、それはそれでわずらわしいしー。とかとか考え、IRCにメッセージを流す中継を行うIRCbotのデーモンを立てるのがいいと思い、手軽にIRCbotを作れるPOEIKC::Plugin::IRC を作ったわけです。
(PoCo::IKCのおかげでデーモンと気軽に会話できるのがいいですね)
(PoCo::IKCのおかげでデーモンと気軽に会話できるのがいいですね)
POEIKC::Plugin::IRC は、POEIKC の Plugin として使います。
poeikcd start -M=POEIKC::Plugin::IRC -a=irc_bot -p 6677 -s
として、起動し、svn でメール送信するスクリプト(commit-email.pl)に、
use POE::Component::IKC::ClientLite;my %param = (ip => Sys::Hostname::hostname,port => 6677,name => join('_'=>Sys::Hostname::hostname, ($0 =~ /(\w+)/g), $$),);my $ikc = create_ikc_client(%param);$ikc or warn $POE::Component::IKC::ClientLite::error;my @param = ({connect=>{Nick=>"svn_bot",Username=>"svn_bot",Ircname=>"svn_bot",Port=>"6667",flood=>1,},channel=>"#svn_commit"});my $message_respond = 'IKC_IRC/message_respond';$ikc->post_respond( $message_respond => [@param, $mail_subject]);$ikc->post_respond( $message_respond => [@param, $mail_body]);
とします。
必要に応じて、trunk にコミットした時だけというロジックを追加したりすれば完成です。