Cakefile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. fs = require 'fs'
  2. CoffeeScript = require 'coffee-script'
  3. {spawn, exec} = require 'child_process'
  4. # ANSI Terminal Colors.
  5. enableColors = no
  6. unless process.platform is 'win32'
  7. enableColors = not process.env.NODE_DISABLE_COLORS
  8. bold = red = green = reset = ''
  9. if enableColors
  10. bold = '\x1B[0;1m'
  11. red = '\x1B[0;31m'
  12. green = '\x1B[0;32m'
  13. reset = '\x1B[0m'
  14. ###
  15. Just proc extender
  16. ###
  17. proc_extender = (cb, proc) =>
  18. proc.stderr.on 'data', (buffer) -> console.log "#{buffer}"
  19. # proc.stdout.on 'data', (buffer) -> console.log "#{buffer}".info
  20. proc.on 'exit', (status) ->
  21. process.exit(1) if status != 0
  22. cb() if typeof cb is 'function'
  23. null
  24. # Run a CoffeeScript through our node/coffee interpreter.
  25. run_coffee = (args, cb) =>
  26. proc_extender cb, spawn 'node', ['./node_modules/.bin/coffee'].concat(args)
  27. # Run a mocha tests
  28. run_mocha = (args, cb) =>
  29. proc_extender cb, spawn 'node', ['./node_modules/.bin/mocha'].concat(args)
  30. # Log a message with a color.
  31. log = (message, color, explanation) ->
  32. console.log color + message + reset + ' ' + (explanation or '')
  33. task 'build', 'build module from source', build = (cb) ->
  34. files = fs.readdirSync 'src'
  35. files = ('src/' + file for file in files when file.match(/\.coffee$/))
  36. run_coffee ['-c', '-o', 'lib/'].concat(files), cb
  37. log ' -> build done', green
  38. task 'test', 'test builded module', ->
  39. build ->
  40. test_file = './test/extend_test.coffee'
  41. run_mocha test_file, -> log ' -> all tests passed :)', green