child_process = require 'child_process'
_exec = child_process.exec
join = (require 'path').join

spawn = (procName, opts, silent=false) ->
  proc = child_process.spawn procName, opts
  unless silent
    proc.stdout.on 'data', (data) -> process.stdout.write data
    proc.stderr.on 'data', (data) -> process.stderr.write data
  proc

exec = (cmd, cb) ->
  _exec cmd, cb


task 'build', 'build publish js file with browserify', ->
  toDest = (fname) ->
    join __dirname, 'dist', fname

  compiled = toDest 'annie.compiled.js'
  target = toDest 'annie.js'

  cmds = [
    'coffee -c annie.coffee'
    "./node_modules/browserify/bin/cmd.js annie.js -o #{compiled}"
    "./node_modules/uglify-js/bin/uglifyjs #{compiled} -o #{target}"
  ]
  exec cmds.join "&&"


task 'autocompile', 'auto compile coffee to js', ->
  spawn 'coffee', ['-cw', __dirname]


task 'test', 'run test', ->
  spawn './node_modules/mocha/bin/mocha'
