-
Notifications
You must be signed in to change notification settings - Fork 1
/
Gruntfile.js
162 lines (139 loc) · 4.07 KB
/
Gruntfile.js
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
module.exports = function(grunt) {
// Load task modules
grunt.loadNpmTasks('grunt-contrib-uglify'); // -- Minifies JS
grunt.loadNpmTasks('grunt-browserify'); // ------ Injects dependencies
grunt.loadNpmTasks('grunt-execute'); // --------- Run node tasks
grunt.loadNpmTasks('grunt-jscs'); // ------------ JS style guide
grunt.loadNpmTasks('grunt-contrib-jshint'); // -- Code checker
grunt.loadNpmTasks('grunt-jsbeautifier'); // ---- Beautify code
grunt.loadNpmTasks('grunt-contrib-copy'); // ---- Copy code to test runner
// Configure tasks
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
jshint: {
all: ['Gruntfile.js', 'modules/*.js', 'testrunner/tests/*.js']
},
jsbeautifier: {
files: '<%= jshint.all %>',
options: {
js: {
indentChar: ' ',
indentSize: 2
}
}
},
jscs: {
options: {
config: '.jscsrc'
},
src: '<%= jshint.all %>'
},
/* Provides CommonJS dependency functionality */
browserify: {
options: {
// Generates inline source maps
browserifyOptions: {
debug: true
}
},
js: {
src: ['modules/*.js'],
dest: 'FFOSBR.js'
}
},
/* Compresses javascript */
uglify: {
js: {
src: 'FFOSBR.js',
dest: 'FFOSBR.min.js'
}
},
copy: {
main: {
files: [{
src: 'FFOSBR.js',
dest: 'testrunner/'
}, {
src: 'FFOSBR.js',
dest: 'DemoUI/'
}],
},
},
execute: {
target: {
src: 'node-firefox-scripts/launch-firefoxos.js'
}
}
});
grunt.registerTask('default', function() {
console.log('No options specified. Will attempt to push to any device, then the simulator');
grunt.task.run([
'build',
'execute'
]);
});
grunt.registerTask('help', function() {
console.log('Registered tasks are:\n');
console.log('grunt build -- Create distributable from modules/main.');
console.log('grunt test -- Deploy and run all tests. Will check for device, then simulator.');
console.log(' opt: sim [version] -- Try to connect to a specific simulator.');
console.log(' opt: create -- Create new unit test.');
});
/**
* Fetch and inject dependencies of all source files,
* and create source maps for improved debugging.
* Also create a minified version of the library.
* This causes the loss of source map debugging.
*/
grunt.registerTask('build', function() {
grunt.task.run([
'jshint',
'jsbeautifier',
'jscs',
'browserify',
'uglify',
'copy'
]);
});
/**
* Deploys Qunit tests to device or simulators.
* [ default ] Deploy and run all tests under "./test/"
* --sim=VERSION Deploy app to specific runtime.
*/
grunt.registerTask('test', function() {
if (grunt.option('sim')) {
var simVersion = grunt.option('sim').toFixed(1);
grunt.config.set('execute.options.args', ['../testrunner', 'pushToVersion', simVersion]);
} else {
grunt.config.set('execute.options.args', ['../testrunner', 'pushToAnything']);
}
grunt.task.run([
'build',
'execute'
]);
});
/**
* Deploys the demo UI application to the device or a simulator.
* Same options as above.
*/
grunt.registerTask('demo', function() {
if (grunt.option('sim')) {
var simVersion = grunt.option('sim').toFixed(1);
grunt.config.set('execute.options.args', ['../DemoUI', 'pushToVersion', simVersion]);
} else {
grunt.config.set('execute.options.args', ['../DemoUI', 'pushToAnything']);
}
// Replace testrunner directory with DemoUI in jshint.all
var newSearchDirectories = grunt.config.get('jshint.all');
var index = newSearchDirectories.indexOf('testrunner/tests/*.js');
if (index > -1) {
newSearchDirectories.splice(index, 1);
}
newSearchDirectories.push('DemoUI/js/*.js');
grunt.config.set('jshint.all', newSearchDirectories);
grunt.task.run([
'build',
'execute'
]);
});
};