1 | /* eslint-env node */ |
||
2 | /*jslint node: true */ |
||
3 | /*jslint esversion: 6 */ |
||
4 | 'use strict'; |
||
5 | |||
6 | // Include gulp |
||
7 | let gulp = require('gulp'); |
||
8 | let del = require('del'); |
||
9 | let runSequence = require('run-sequence'); |
||
10 | let uglifyes = require('uglify-es'); |
||
11 | let composer = require('gulp-uglify/composer'); |
||
12 | |||
13 | // Include plugins |
||
14 | let plugins = require('gulp-load-plugins')(); |
||
15 | |||
16 | let Server = require('karma').Server; |
||
17 | let ugly = composer(uglifyes, console); |
||
18 | |||
19 | // unit test |
||
20 | gulp.task('karma', function (done) { |
||
21 | new Server({ |
||
22 | configFile: __dirname + '/test/unit/karma.conf.js', |
||
0 ignored issues
–
show
Compatibility
introduced
by
![]() |
|||
23 | singleRun: true |
||
24 | }, done).start(); |
||
25 | }); |
||
26 | |||
27 | gulp.task('codecov', function() { |
||
28 | return gulp |
||
29 | .src(['test/unit/coverage/**/lcov.info'], { read: false }) |
||
30 | .pipe(plugins.codeclimateReporter({ token: '8e959350aa2fde657bbdd472964d5b2bdbb7d2ba10b8f6137865f2c241ecc86e' })) |
||
31 | ; |
||
32 | }); |
||
33 | |||
34 | // e2e test |
||
35 | gulp.task('connect', function() { |
||
36 | return plugins.connect.server({ |
||
37 | root: 'build/', |
||
38 | port: 9000 |
||
39 | }); |
||
40 | }); |
||
41 | |||
42 | gulp.task('webdriver_update', plugins.protractor.webdriver_update_specific({ |
||
43 | browsers: ['ignore_ssl'] |
||
44 | })); |
||
45 | |||
46 | gulp.task('protractor', ['connect', 'webdriver_update'], function() { |
||
47 | return gulp.src(['test/integration/spec/**.js'], { read: false }) |
||
48 | .pipe(plugins.protractor.protractor({ |
||
49 | configFile: 'test/integration/protractor.conf.js' |
||
50 | })) |
||
51 | .on('error', function(e) { throw e; }); |
||
52 | }); |
||
53 | |||
54 | gulp.task('disconnect', function() { |
||
55 | return plugins.connect.serverClose(); |
||
56 | }); |
||
57 | |||
58 | // clean |
||
59 | gulp.task('clean',function(){ |
||
60 | return del(['dist','build']); |
||
61 | }); |
||
62 | |||
63 | // dist |
||
64 | |||
65 | gulp.task('htmlmin', function() { |
||
66 | return gulp.src('build/**/*.html') |
||
67 | .pipe(plugins.htmlmin({collapseWhitespace: true})) |
||
68 | .pipe(gulp.dest('dist/')); |
||
69 | }); |
||
70 | |||
71 | gulp.task('uglify', function() { |
||
72 | return gulp.src('build/scripts/app.min.js') |
||
73 | .pipe(ugly()) |
||
74 | .pipe(gulp.dest('dist/scripts')); |
||
75 | }); |
||
76 | |||
77 | gulp.task('cleanCss', function() { |
||
78 | return gulp.src('build/**/*.css') |
||
79 | .pipe(plugins.cleanCss()) |
||
80 | .pipe(gulp.dest('dist/')); |
||
81 | }); |
||
82 | |||
83 | gulp.task('minify', ['uglify', 'htmlmin', 'cleanCss']); |
||
84 | |||
85 | // FIXME can we do this with a parametric task? |
||
86 | gulp.task('copy-lib-dist', function() { |
||
87 | return gulp.src('bower_components/**') |
||
88 | .pipe(gulp.dest('dist/bower_components')); |
||
89 | }); |
||
90 | |||
91 | // dependencies |
||
92 | |||
93 | gulp.task('bower', function() { |
||
94 | return plugins.bower(); |
||
95 | }); |
||
96 | |||
97 | // copy |
||
98 | gulp.task('copy-js', function() { |
||
99 | return gulp.src('src/scripts/**') |
||
100 | .pipe(gulp.dest('build/scripts')); |
||
101 | }); |
||
102 | |||
103 | gulp.task('copy-data', function() { |
||
104 | return gulp.src('src/data/**') |
||
105 | .pipe(gulp.dest('build/data')); |
||
106 | }); |
||
107 | |||
108 | gulp.task('copy-html', function() { |
||
109 | return gulp.src('src/html/**') |
||
110 | .pipe(gulp.dest('build/')); |
||
111 | }); |
||
112 | |||
113 | gulp.task('copy-css', function() { |
||
114 | return gulp.src('src/styles/**') |
||
115 | .pipe(gulp.dest('build/styles')); |
||
116 | }); |
||
117 | |||
118 | gulp.task('copy-lib', function() { |
||
119 | return gulp.src('bower_components/**') |
||
120 | .pipe(gulp.dest('build/bower_components')); |
||
121 | }); |
||
122 | |||
123 | gulp.task('copy-build', ['copy-js', 'copy-data', 'copy-html', |
||
124 | 'copy-css', 'copy-lib']); |
||
125 | |||
126 | // build |
||
127 | |||
128 | gulp.task('populate_player', function() { |
||
129 | return plugins.run('node build_scripts/populate_player.js',{silent:true}).exec(); |
||
130 | }); |
||
131 | |||
132 | gulp.task('populate_data', function() { |
||
133 | return plugins.run('node build_scripts/populate_data.js',{silent:true}).exec(); |
||
134 | }); |
||
135 | |||
136 | gulp.task('generate_isotopes', function() { |
||
137 | return plugins.run('node build_scripts/generate_isotopes.js',{silent:true}).exec(); |
||
138 | }); |
||
139 | |||
140 | gulp.task('generate_resource_matrix', function() { |
||
141 | return plugins.run('node build_scripts/generate_resource_matrix.js',{silent:true}).exec(); |
||
142 | }); |
||
143 | |||
144 | gulp.task('generate_decay', function() { |
||
145 | return plugins.run('node build_scripts/generate_decay.js',{silent:true}).exec(); |
||
146 | }); |
||
147 | |||
148 | gulp.task('generate_ions', function() { |
||
149 | return plugins.run('node build_scripts/generate_ions.js',{silent:true}).exec(); |
||
150 | }); |
||
151 | |||
152 | gulp.task('generate_reactions', function() { |
||
153 | return plugins.run('node build_scripts/generate_reactions.js',{silent:true}).exec(); |
||
154 | }); |
||
155 | |||
156 | gulp.task('generate_antimatter', function() { |
||
157 | return plugins.run('node build_scripts/generate_antimatter.js',{silent:true}).exec(); |
||
158 | }); |
||
159 | |||
160 | gulp.task('generate_achievements', function() { |
||
161 | return plugins.run('node build_scripts/generate_achievements.js',{silent:true}).exec(); |
||
162 | }); |
||
163 | |||
164 | gulp.task('generate_unlocks', function() { |
||
165 | return plugins.run('node build_scripts/generate_unlocks.js',{silent:true}).exec(); |
||
166 | }); |
||
167 | |||
168 | gulp.task('generate_achievement_functions', function() { |
||
169 | return plugins.run('node build_scripts/generate_achievement_functions.js',{silent:false}).exec(); |
||
170 | }); |
||
171 | |||
172 | gulp.task('generate_upgrades', function() { |
||
173 | return plugins.run('node build_scripts/generate_upgrades.js',{silent:false}).exec(); |
||
174 | }); |
||
175 | |||
176 | gulp.task('generate_exotic_upgrades', function() { |
||
177 | return plugins.run('node build_scripts/generate_exotic_upgrades.js',{silent:false}).exec(); |
||
178 | }); |
||
179 | |||
180 | gulp.task('generate_upgrade_functions', function() { |
||
181 | return plugins.run('node build_scripts/generate_upgrade_functions.js',{silent:true}).exec(); |
||
182 | }); |
||
183 | |||
184 | gulp.task('generate_element_slot', function() { |
||
185 | return plugins.run('node build_scripts/generate_element_slot.js',{silent:true}).exec(); |
||
186 | }); |
||
187 | |||
188 | gulp.task('sort_resources', function() { |
||
189 | return plugins.run('node build_scripts/sort_resources.js',{silent:true}).exec(); |
||
190 | }); |
||
191 | |||
192 | gulp.task('concat', function() { |
||
193 | return gulp.src(['build/scripts/modules/module.js', |
||
194 | 'build/scripts/**/*!(module.js)']) |
||
195 | .pipe(plugins.concat('app.min.js')) |
||
196 | .pipe(gulp.dest('build/scripts')); |
||
197 | }); |
||
198 | |||
199 | // public tasks |
||
200 | gulp.task('build', function(callback) { |
||
201 | runSequence( |
||
202 | 'clean', |
||
203 | 'bower', |
||
204 | 'copy-build', |
||
205 | 'generate_isotopes', |
||
206 | 'generate_resource_matrix', |
||
207 | 'generate_ions', |
||
208 | 'generate_decay', |
||
209 | 'generate_reactions', |
||
210 | 'generate_antimatter', |
||
211 | 'generate_achievements', |
||
212 | 'generate_unlocks', |
||
213 | 'generate_exotic_upgrades', |
||
214 | 'generate_upgrades', |
||
215 | 'generate_achievement_functions', |
||
216 | 'generate_upgrade_functions', |
||
217 | 'generate_element_slot', |
||
218 | 'sort_resources', |
||
219 | 'populate_player', |
||
220 | 'populate_data', |
||
221 | 'concat', |
||
222 | callback); |
||
223 | }); |
||
224 | |||
225 | gulp.task('build-unit-test', function(callback) { |
||
226 | runSequence('build', 'karma', callback); |
||
227 | }); |
||
228 | |||
229 | gulp.task('dist', function(callback) { |
||
230 | runSequence('build', 'minify', 'copy-lib-dist', callback); |
||
231 | }); |
||
232 | |||
233 | gulp.task('unit-test', function(callback) { |
||
234 | runSequence('dist', 'karma', 'codecov', callback); |
||
235 | }); |
||
236 | |||
237 | gulp.task('e2e-test', function(callback) { |
||
238 | runSequence('dist', 'protractor', 'disconnect', |
||
239 | callback); |
||
240 | }); |
||
241 | |||
242 | gulp.task('test', ['unit-test', 'e2e-test']); |
||
243 |