58 lines
1.5 KiB
CoffeeScript
58 lines
1.5 KiB
CoffeeScript
{spawn} = require 'child_process'
|
|
Promise = require 'bluebird'
|
|
|
|
bin = "./node_modules/.bin"
|
|
sh = "/bin/sh"
|
|
|
|
_runCmd = (prev, current) ->
|
|
prev.then ->
|
|
new Promise (resolve, reject) ->
|
|
args = ['-c', current]
|
|
child = spawn sh, args, {stdio: 'inherit'}
|
|
|
|
child.on 'error', reject
|
|
|
|
child.on 'exit', (code) ->
|
|
if (code or 0) is 0 then resolve() else reject()
|
|
|
|
run = (cmds...) ->
|
|
seq = cmds.reduce _runCmd, Promise.resolve()
|
|
seq.error (err) -> console.log 'Failed.', err
|
|
|
|
cleanup = ->
|
|
run "rm -rf .test .shim.js"
|
|
|
|
exit = (code = 0) ->
|
|
process.exit code
|
|
|
|
callbacks =
|
|
success: -> console.log 'Great Success!'
|
|
error: -> console.error 'Task failed.'
|
|
|
|
option '', '--test-regex [TEST_RE]', 'Run tests matching TEST_RE.'
|
|
|
|
task "clean", "cleanup build and test artifacts", ->
|
|
cleanup().then -> console.log 'All clean.'
|
|
|
|
task "build", "coffee-compile and browserify phantom", ->
|
|
run(
|
|
"#{bin}/coffee -c phantom.coffee"
|
|
"#{bin}/browserify -t coffeeify shim.coffee -o .shim.js"
|
|
"cat pre_shim.js .shim.js > shim.js"
|
|
)
|
|
.then(callbacks.success, callbacks.error)
|
|
.finally cleanup
|
|
|
|
task "test", "run phantom's unit tests", (options) ->
|
|
invoke('build').then ->
|
|
batch = run(
|
|
"#{bin}/coffee -o .test -c test/*.coffee"
|
|
"cp test/*.gif test/*.js .test/"
|
|
"#{bin}/vows --spec .test/#{options['test-regex'] ? '*'}.js"
|
|
)
|
|
|
|
batch
|
|
.then(callbacks.success, callbacks.error)
|
|
.then(cleanup)
|
|
.catch -> exit(1)
|