/
Gruntfile.coffee
50 lines (41 loc) · 1.28 KB
/
Gruntfile.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
module.exports = (grunt) ->
pkg = grunt.file.readJSON('package.json')
spawn = require("child_process").spawn
replacements =
dev:
'VERSION_NUMBER': pkg.version
# Project configuration.
grunt.initConfig
# Tasks
clean:
main: ['libs']
coffee:
main:
files: [
expand: true
cwd: 'src/'
src: ['**/*.coffee']
dest: 'libs/'
ext: '.js'
]
'string-replace':
dev:
files:
'libs/version-map.js': ['libs/version-map.js']
options:
replacements: ({'pattern': new RegExp(key, "g"), 'replacement': value} for key, value of replacements.dev)
watch:
dev:
files: ['src/**/*.coffee', 'spec/**/*.coffee']
tasks: ['clean', 'coffee', 'string-replace', 'test']
grunt.loadNpmTasks name for name of pkg.devDependencies when name[0..5] is 'grunt-'
grunt.registerTask 'test', ->
done = @async()
cmd = spawn('./node_modules/jasmine-node/bin/jasmine-node', ['--coffee', 'spec/'])
write = (data) ->
process.stdout.write data.toString()
cmd.stdout.on "data", write
cmd.stderr.on "data", write
cmd.on "exit", (code) ->
done code is 0
grunt.registerTask 'default', ['clean', 'coffee', 'string-replace', 'test', 'watch']