TitaniumのコードをGUIなしでエディタからすばやくbuildする

最近ちまたではTitaniumが話題ですね。はてなの技術勉強会で紹介されたのをきっかけに少しいじってみています。

Titanium開発では、通常Titanium DeveloperというGUIアプリケーションを使ってコードをbuildします。開発中は、どうしてもTitanium Developerとエディタとの行き来が必要で、なかなか不便です。

そこで、Titaniumのコードをvimなどのエディタから一発で、すばやくbuildできるようになるスクリプトを書いてみました。ついでにXCodeもTitanium Developerも(GUIの部分は)起動しなくてよくなります。

使い方

https://gist.github.com/715378 を Titaniumのプロジェクトの直下に置いて、

$ perl build.pl

のように実行します。すると9090番ポートでbuild用HTTPサーバが立ち上がります。

エディタからこのbuildサーバの/runにHTTPリクエストを送るとビルドが実行されます。vimの場合は以下のようしておくと良いです。

nnoremap <unique> <silent> <Leader>ti :call system('curl http://localhost:9090/run &')<CR>

これでvimで,tiとするだけでbuildがはじまります。 Titaniumのプロジェクト内のファイルがコンパイルされ、シミュレータが起動します。キーボードから手を離さずにすばやくbuildできて便利!

buildが実行されるとbuildサーバでは以下のようにTitaniumのログが表示されます。

> perl build.pl
starting server at localhost:9090 at build.pl line 38.
[INFO] One moment, building ...
[TRACE] app property, ti.android.debug : false
[INFO] Titanium SDK version: 1.4.2
[INFO] iPhone Device family: None
[INFO] iPhone SDK version: 4.0
...

どうしてこうなってるか

build.plのソースコードを見てもらえればわかるのですが、以下のようにすれば、GUIなしでビルドが実行できます。

$ "/Library/Application Support/Titanium/mobilesdk/osx/1.4.2/iphone/builder.py" run /path/to/TiProject

このコマンドは大変便利なのですが、vimとかのエディタから直接実行すると、工夫してもログが見れなかったり、エディタがこのスクリプトにブロックされてしまったりするので、あまりうまくありません。

なので、要求に応じてbuildをするだけのサーバを作って、そこにメッセージを送ることでエディタからのbuildを実現してます。AnyEventべんりー