You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.0 KiB
125 lines
3.0 KiB
# This file was originally created by Benjamin Lupton <b@lupton.cc> (http://balupton.com)
|
|
# and is currently licensed under the Creative Commons Zero (http://creativecommons.org/publicdomain/zero/1.0/)
|
|
# making it public domain so you can do whatever you wish with it without worry (you can even remove this notice!)
|
|
#
|
|
# If you change something here, be sure to reflect the changes in:
|
|
# - the scripts section of the package.json file
|
|
# - the .travis.yml file
|
|
|
|
|
|
# -----------------
|
|
# Variables
|
|
|
|
WINDOWS = process.platform.indexOf('win') is 0
|
|
NODE = process.execPath
|
|
NPM = if WINDOWS then process.execPath.replace('node.exe','npm.cmd') else 'npm'
|
|
EXT = (if WINDOWS then '.cmd' else '')
|
|
APP = process.cwd()
|
|
BIN = "#{APP}/node_modules/.bin"
|
|
CAKE = "#{BIN}/cake#{EXT}"
|
|
COFFEE = "#{BIN}/coffee#{EXT}"
|
|
OUT = "#{APP}/out"
|
|
SRC = "#{APP}/src"
|
|
TEST = "#{APP}/test"
|
|
|
|
|
|
# -----------------
|
|
# Requires
|
|
|
|
pathUtil = require('path')
|
|
{exec,spawn} = require('child_process')
|
|
safe = (next,fn) ->
|
|
return (err) ->
|
|
return next(err) if err
|
|
return fn()
|
|
|
|
|
|
# -----------------
|
|
# Actions
|
|
|
|
clean = (opts,next) ->
|
|
(next = opts; opts = {}) unless next?
|
|
args = [
|
|
'-Rf'
|
|
OUT
|
|
pathUtil.join(APP,'node_modules')
|
|
pathUtil.join(APP,'*out')
|
|
pathUtil.join(APP,'*log')
|
|
pathUtil.join(TEST,'node_modules')
|
|
pathUtil.join(TEST,'*out')
|
|
pathUtil.join(TEST,'*log')
|
|
]
|
|
spawn('rm', args, {stdio:'inherit',cwd:APP}).on('exit',next)
|
|
|
|
compile = (opts,next) ->
|
|
(next = opts; opts = {}) unless next?
|
|
spawn(COFFEE, ['-bco', OUT, SRC], {stdio:'inherit',cwd:APP}).on('exit',next)
|
|
|
|
watch = (opts,next) ->
|
|
(next = opts; opts = {}) unless next?
|
|
spawn(COFFEE, ['-bwco', OUT, SRC], {stdio:'inherit',cwd:APP}).on('exit',next)
|
|
|
|
install = (opts,next) ->
|
|
(next = opts; opts = {}) unless next?
|
|
spawn(NPM, ['install'], {stdio:'inherit',cwd:APP}).on 'exit', safe next, ->
|
|
spawn(NPM, ['install'], {stdio:'inherit',cwd:TEST}).on('exit',next)
|
|
|
|
reset = (opts,next) ->
|
|
(next = opts; opts = {}) unless next?
|
|
clean opts, safe next, -> install opts, safe next, -> compile opts, next
|
|
|
|
setup = (opts,next) ->
|
|
(next = opts; opts = {}) unless next?
|
|
install opts, safe next, ->
|
|
compile opts, next
|
|
|
|
test = (opts,next) ->
|
|
(next = opts; opts = {}) unless next?
|
|
spawn(NPM, ['test'], {stdio:'inherit',cwd:APP}).on('exit',next)
|
|
|
|
finish = (err) ->
|
|
throw err if err
|
|
console.log('OK')
|
|
|
|
|
|
# -----------------
|
|
# Commands
|
|
|
|
# clean
|
|
task 'clean', 'clean up instance', ->
|
|
clean finish
|
|
|
|
# compile
|
|
task 'compile', 'compile our files', ->
|
|
compile finish
|
|
|
|
# dev/watch
|
|
task 'dev', 'watch and recompile our files', ->
|
|
watch finish
|
|
task 'watch', 'watch and recompile our files', ->
|
|
watch finish
|
|
|
|
# install
|
|
task 'install', 'install dependencies', ->
|
|
install finish
|
|
|
|
# reset
|
|
task 'reset', 'reset instance', ->
|
|
reset finish
|
|
|
|
# setup
|
|
task 'setup', 'setup for development', ->
|
|
setup finish
|
|
|
|
# test
|
|
task 'test', 'run our tests', ->
|
|
test finish
|
|
|
|
# test-debug
|
|
task 'test-debug', 'run our tests in debug mode', ->
|
|
test {debug:true}, finish
|
|
|
|
# test-prepare
|
|
task 'test-prepare', 'prepare out tests', ->
|
|
setup finish
|
|
|