{watcher,utility} = browserBuild = require 'browser-build'

isWindows = process.platform is 'win32'
ext = if isWindows then ".bat" else ""
server = null

start = ->
    server = utility.spawn "ant#{ext} runserver"

restart = ((callback) ->
    kill ->
        start()
        callback?()
    ).debounce(1000)

kill = (callback) ->
    server?.kill()
    server = null
    # in case that doesn't succeed, on windows
    # we will also do a task kill of all java.exe processes
    if isWindows
        utility.exec "taskkill /F /IM java.exe", callback
    else
        callback?()

build = ->
    utility.spawn "ant#{ext} compile", ->

exports.run = restart
exports.restart = restart
exports.kill = kill
exports.build = build