Attention! Translated article might be found on my English blog.

2015年11月28日土曜日

cakeコマンドでexecの終了コードを返して終了する

・execでのエラー発生時、引数errorにErrorインスタンスがセットされている。
・execで実行したコマンドの終了コードはerror.codeで分かる。
・node.jsのグローバル変数processのメソッドexit()で任意の終了コードを返してcakeを終了することができる。

とりあえずerrorがセットされた場合にerror.codeを引数としてprocess.exit()を叩くようにした。

task 'build', 'compile target files', ->
    targetList = targetList.join(' ')

    # コンパイルコマンド
    cmd ="cat #{targetList} | coffee #{OPTIONS} > #{OUTDIR}/#{TARGET_FILENAME}"

    # コンパイル実行
    exec cmd, (error, stdout, stderr) ->
        util.log(error) if error
        util.log(stdout) if stdout
        util.log(stderr) if stderr
        process.exit(error.code) if error

coffeeコマンドでコンパイルに失敗した場合は終了コードが1にセットされているようなので
これを使って成功か失敗かを判定することができる。