ushidayの日記

主に「IBMi」のメモに・・・

Growl for Windows

Grails徹底入門11章の勉強を始めました。
スクリプト関係(Gant)で始まっている章です。その中で、スクリプトのイベントをキャッチする、event()メソッドがありました。event()メソッド自体は、”$GRAILS_HOME/scripts/Init.groovy”で用意されているので、特にどうこうは無いのですが、以下の様に呼び出すことが出来ます。

/------------スクリプト-----------
target('default': "The description of the script goes here!") {
	//開始イベントの呼び出し(init.groovyのevent()メソッドを使う)
	event("StartStatus",["Script start"])
}

/------------Eventスクリプト-----------
eventStartStatus = { msg ->
	println "Script Start:${msg}"
}

eventメソッドの第1引数がEventスクリプトクロージャ名とタイアップされて、第2引数のリストは、クロージャの引数になります。
Eventスクリプトは、”Event.groovy”で、適宜”scripts”のディレクトリに配置します。
それが更に進んで、標準出力ではなく、Antのexecタスクで、Growlを呼び出して、カッチョ良くみせる解説があったので、やってみました。
ただ、職場にいる時は、Windows環境なので、「GrowlみたいなWindowsアプリあるのかなぁ〜?ダサいメッセージングのアプリなら、やらなくてもいいか?」的なノリで、ググったら、一発で「Growl for Windows」って出てきました。何でもやってしまう、凄い人は何処の世界にもいるんですね。Macとは若干オプションの指定が違うみたいですが、基本はほぼ一緒のようです。この辺りが、共通になるか、ラップしてくれる何かがあれば、Mac,Winどちらでもいけそうですね。
Growl対応で以下の様に、Eventスクリプトを変更しました。

eventStartStatus = { msg ->
	growlNotify("Script Start",msg)
}

/* Growl処理 */
void growlNotify(title, msg){

	// application.propertiesの参照
	def metadata = new Properties()
	def metadataFile = new FileInputStream("${basedir}/application.properties")
	metadata.load(metadataFile)
	def projectName = metadata["app.name"]
	def grailsVersion= metadata["app.grails.version"]
	//アイコン
	def icon = "${basedir}/web-app/images/grails-128x128icon.png"
	Ant.exec(executable:"C:/Program Files/Growl for Windows/growlnotify.exe"){
		arg(value:"/a:Grails")
		arg(value:"/i:${icon}")
		arg(value:"/r:${projectName}")
		arg(value:"/n:${projectName}")
		arg(value:"/t:${title}")
		arg(value:msg)
	}

}


各環境にGrowlを入れなきゃいけないのは、たまに傷ですけど、カッコイイデスネ。