Hatena::ブログ(Diary)

marsのメモ RSSフィード Twitter

2008-02-19(Tue)

Emotional Hudsonプラグイン作りました

ソースはここ。→no title

.hpiはここ。→no title


ネタを思いついた時点で7割方満足したのだけれど,ちょっと踏ん張って実際に作ってみたよ。

テストやビルドにコケるとハドソンさんの表情が変わるデス。順調な状態がしばらく続くと,ミセスハドソン(犬のほう)になりますなりません。:-P

それと,プラグインといっても,マジメにExtension Point利用してないし,結構エグいことしてるから,どっちかと言えばハックに近いと思われ。

f:id:masanobuimai:20080219120411p:image

#アホなもん作って,すんまそん。>川口さん


(追記) 公開したんで,ついでに使い方を(それほど大したことしないけど)。

"Job"のサイドメニュー"Configure"を開くと,下の方に"Post-build Actions"というセクションがあって,そこに"Emotional Hudson"という項目が追加されます。あとはそれをチェックして,保存するだけ。

プラグインが有効になれば,JobのStatus画面と各buildの画面で,ハドソンさんの表情が変わります。


つうわけで,ハドソンさんに楽しく仕事をさせてあげましょう。:-D

ExcelHelper(scriptom)を利用してExcelファイルの更新をする

Win32OLEよろしく,"workbook.Save()"とするのかと思ったら違ってた。


ExcelHelperにちょっとした仕掛けがしてあって,このクラス,指定したExcelファイルを一時ファイルにコピーしてから操作する作りになってる。なんで,

new ExcelHelper().process(new File('test.xls')) {
  workbook ->
  workbook.Save()
}

としても,'test.xls'が保存されるんじゃなくて,ExcelHelperが勝手に作った一時ファイルを保存することになる。

さらに間の悪いことに,ExcelHelper.process()は最後に一時ファイルを消しちゃうのだ。


結局,どうすればいいかと言えば,こうする。

new ExcelHelper().create(new File('test.xls'), new File('test.xls')) {
  workbook ->
  def worksheet = workbook.Sheets(1)
  worksheet.Cells(1,1).Value = 'hoge hoge'
}

workbook.Save()とかしない。ExcelHelper.create()は,処理の最後に第一引数で指定されたExcelファイル*1を保存し,第二引数のファイルにコピーするので,ご覧の通り保存については,なんもしなくていい。

ちなみに,前述のExcelHelper.process()の実装は,こうなってる。

void process(File inputXL, Closure closure) {
  create(inputXL, null, closure)
}

第一,第二引数に同じ値を与えるのがイケてないと思うので,こんなの作りたくなるのが人情ってモンよ。

ExcelHelper.metaClass.update = {
  File updateXls, Closure closure ->
  delegate.create(updateXls, updateXls, closure)
}

しかし,こんな具合に俺様API作りまくるってのはどうなんだろ?

ある種,スクリプト言語の醍醐味なんだけど,不吉な臭いも醸すんだよねぇ。:-(

*1:正しくは,それをコピーした一時ファイル

T.YamamotoT.Yamamoto 2008/02/19 13:34 通りすがりですが、さっそく使ってみます:)

masanobuimaimasanobuimai 2008/02/19 14:51 こんなでよろしければ,どぞー。
ウチ帰ったら.hpiファイルもリリースしますんで,それまではソースからビルドしてください。

cactusmancactusman 2008/02/19 17:30 これはいいプラグインだw
ぜひともリリースしてください!
それと、これを1000speakersのプレゼンでぜひ使わせてください。
お願いします。

masanobuimaimasanobuimai 2008/02/19 20:58 どぞどぞ。好きに使ってください。

kanu-orzkanu-orz 2009/07/31 20:56 初めまして
cactusmanさんのhudsonには萌えが足りないという一言を受けて(?)、
emotional-hudsonプラグインを殆どそのままの流用させていただいて
moemotional-hudsonプラグインというのを作成中です。
hudsonさんでは無く萌え(?)なキャラが表示されるプラグイン
なのですが、
中身はほとんどそのままに近い状態です。
お許しを頂ければ公開しようと思ってますので、突然で不躾な
お願いですが検討宜しくお願いします。

カレンダー
2003 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 03 | 04 | 05 | 06 | 07 | 09 | 11 |