-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.coffee
65 lines (43 loc) · 1.86 KB
/
gulpfile.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
path = require('path')
gulp = require('gulp')
gutil = require('gulp-util')
minimist = require('minimist')
argv = minimist(process.argv.slice(2))
runSequence = require('run-sequence')
changed = require('gulp-changed')
cache = require('gulp-cached')
plumber = require('gulp-plumber')
del = require('del')
shell = require('shelljs')
mocha = require('gulp-mocha')
xtask = ->
task = gulp.task.bind(gulp)
src = gulp.src.bind(gulp)
from = (source, options={dest:'app', cache:'cache'}) ->
options.dest ?= 'app'
options.cache ?= 'cache'
src(source).pipe(changed(options.dest)).pipe(cache(options.cache)).pipe(plumber())
dest = gulp.dest.bind(gulp)
FromStream = from('').constructor
FromStream::to = (dst) -> @pipe(dest(dst))
FromStream::pipelog = (obj, log=gutil.log) -> @pipe(obj).on('error', log)
task 'clean', (cb) -> del(['lib', 'test-build', 'demo-build'], cb)
logTime = (msg) ->
t = new Date()
console.log("[#{t.getHours()}:#{t.getMinutes()}:#{t.getSeconds()}]: "+msg)
coffee = require('gulp-coffee')
task 'coffee', (cb) ->
from(['./src/**/*.coffee'], {cache:'coffee'}).pipelog(coffee({bare: true})).pipe(dest('./lib'))
# below is just for who prefer to reading javascript
from(['./test/**/*.coffee'], {cache:'coffee'}).pipelog(coffee({bare: true})).pipe(dest('./test-build'))
from(['./demo/**/*.coffee'], {cache:'coffee'}).pipelog(coffee({bare: true})).pipe(dest('./demo-build'))
onErrorContinue = (err) -> console.log(err.stack); @emit 'end'
task 'run-express', ->
if shell.exec("node demo-build/express/index.js").code != 0
shell.echo 'Error: Git commit failed'
shell.exit 1
task 'mocha', ->
src('test-build/**/test*.js').pipe(mocha({reporter: 'spec'})).on("error", onErrorContinue)
task 'dev', (callback) -> runSequence 'clean', 'mocha', callback
task 'express', (callback) -> runSequence 'clean', 'coffee', 'run-express', callback
task 'default', ['dev']