angarg12 /
nucleogenesis
| 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
Loading history...
|
|||
| 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-lang', function() { |
||
| 109 | return gulp.src('src/lang/**') |
||
| 110 | .pipe(gulp.dest('build/lang')); |
||
| 111 | }); |
||
| 112 | |||
| 113 | gulp.task('copy-html', function() { |
||
| 114 | return gulp.src('src/html/**') |
||
| 115 | .pipe(gulp.dest('build/')); |
||
| 116 | }); |
||
| 117 | |||
| 118 | gulp.task('copy-css', function() { |
||
| 119 | return gulp.src('src/styles/**') |
||
| 120 | .pipe(gulp.dest('build/styles')); |
||
| 121 | }); |
||
| 122 | |||
| 123 | gulp.task('copy-lib', function() { |
||
| 124 | return gulp.src('bower_components/**') |
||
| 125 | .pipe(gulp.dest('build/bower_components')); |
||
| 126 | }); |
||
| 127 | |||
| 128 | gulp.task('copy-build', ['copy-js', 'copy-data', 'copy-lang', 'copy-html', |
||
| 129 | 'copy-css', 'copy-lib']); |
||
| 130 | |||
| 131 | // build |
||
| 132 | |||
| 133 | gulp.task('populate_player', function() { |
||
| 134 | return plugins.run('node build_scripts/populate_player.js',{silent:true}).exec(); |
||
| 135 | }); |
||
| 136 | |||
| 137 | gulp.task('populate_data', function() { |
||
| 138 | return plugins.run('node build_scripts/populate_data.js',{silent:true}).exec(); |
||
| 139 | }); |
||
| 140 | |||
| 141 | gulp.task('generate_isotopes', function() { |
||
| 142 | return plugins.run('node build_scripts/generate_isotopes.js',{silent:true}).exec(); |
||
| 143 | }); |
||
| 144 | |||
| 145 | gulp.task('generate_resource_matrix', function() { |
||
| 146 | return plugins.run('node build_scripts/generate_resource_matrix.js',{silent:true}).exec(); |
||
| 147 | }); |
||
| 148 | |||
| 149 | gulp.task('generate_decay', function() { |
||
| 150 | return plugins.run('node build_scripts/generate_decay.js',{silent:true}).exec(); |
||
| 151 | }); |
||
| 152 | |||
| 153 | gulp.task('generate_ions', function() { |
||
| 154 | return plugins.run('node build_scripts/generate_ions.js',{silent:true}).exec(); |
||
| 155 | }); |
||
| 156 | |||
| 157 | gulp.task('generate_reactions', function() { |
||
| 158 | return plugins.run('node build_scripts/generate_reactions.js',{silent:true}).exec(); |
||
| 159 | }); |
||
| 160 | |||
| 161 | gulp.task('generate_antimatter', function() { |
||
| 162 | return plugins.run('node build_scripts/generate_antimatter.js',{silent:true}).exec(); |
||
| 163 | }); |
||
| 164 | |||
| 165 | gulp.task('generate_achievements', function() { |
||
| 166 | return plugins.run('node build_scripts/generate_achievements.js',{silent:true}).exec(); |
||
| 167 | }); |
||
| 168 | |||
| 169 | gulp.task('generate_unlocks', function() { |
||
| 170 | return plugins.run('node build_scripts/generate_unlocks.js',{silent:true}).exec(); |
||
| 171 | }); |
||
| 172 | |||
| 173 | gulp.task('generate_achievement_functions', function() { |
||
| 174 | return plugins.run('node build_scripts/generate_achievement_functions.js',{silent:false}).exec(); |
||
| 175 | }); |
||
| 176 | |||
| 177 | gulp.task('generate_upgrades', function() { |
||
| 178 | return plugins.run('node build_scripts/generate_upgrades.js',{silent:false}).exec(); |
||
| 179 | }); |
||
| 180 | |||
| 181 | gulp.task('generate_exotic_upgrades', function() { |
||
| 182 | return plugins.run('node build_scripts/generate_exotic_upgrades.js',{silent:false}).exec(); |
||
| 183 | }); |
||
| 184 | |||
| 185 | gulp.task('generate_upgrade_functions', function() { |
||
| 186 | return plugins.run('node build_scripts/generate_upgrade_functions.js',{silent:true}).exec(); |
||
| 187 | }); |
||
| 188 | |||
| 189 | gulp.task('generate_element_slot', function() { |
||
| 190 | return plugins.run('node build_scripts/generate_element_slot.js',{silent:true}).exec(); |
||
| 191 | }); |
||
| 192 | |||
| 193 | gulp.task('check_isotopes', function() { |
||
| 194 | return plugins.run('node build_scripts/check_isotopes.js',{silent:false}).exec(); |
||
| 195 | }); |
||
| 196 | |||
| 197 | gulp.task('sort_resources', function() { |
||
| 198 | return plugins.run('node build_scripts/sort_resources.js',{silent:true}).exec(); |
||
| 199 | }); |
||
| 200 | |||
| 201 | gulp.task('process_lang', function() { |
||
| 202 | return plugins.run('node build_scripts/process_lang.js',{silent:true}).exec(); |
||
| 203 | }); |
||
| 204 | |||
| 205 | gulp.task('concat', function() { |
||
| 206 | return gulp.src(['build/scripts/modules/module.js', |
||
| 207 | 'build/scripts/**/*!(module.js)']) |
||
| 208 | .pipe(plugins.concat('app.min.js')) |
||
| 209 | .pipe(gulp.dest('build/scripts')); |
||
| 210 | }); |
||
| 211 | |||
| 212 | // public tasks |
||
| 213 | gulp.task('build', function(callback) { |
||
| 214 | runSequence( |
||
| 215 | 'clean', |
||
| 216 | 'bower', |
||
| 217 | 'copy-build', |
||
| 218 | 'generate_isotopes', |
||
| 219 | 'generate_resource_matrix', |
||
| 220 | 'generate_ions', |
||
| 221 | 'generate_decay', |
||
| 222 | 'generate_reactions', |
||
| 223 | 'generate_antimatter', |
||
| 224 | 'generate_achievements', |
||
| 225 | 'generate_unlocks', |
||
| 226 | 'generate_exotic_upgrades', |
||
| 227 | 'generate_upgrades', |
||
| 228 | 'generate_achievement_functions', |
||
| 229 | 'generate_upgrade_functions', |
||
| 230 | 'generate_element_slot', |
||
| 231 | 'process_lang', |
||
| 232 | 'sort_resources', |
||
| 233 | 'check_isotopes', |
||
| 234 | 'populate_player', |
||
| 235 | 'populate_data', |
||
| 236 | 'concat', |
||
| 237 | callback); |
||
| 238 | }); |
||
| 239 | |||
| 240 | gulp.task('build-unit-test', function(callback) { |
||
| 241 | runSequence('build', 'karma', callback); |
||
| 242 | }); |
||
| 243 | |||
| 244 | gulp.task('dist', function(callback) { |
||
| 245 | runSequence('build', 'minify', 'copy-lib-dist', callback); |
||
| 246 | }); |
||
| 247 | |||
| 248 | gulp.task('unit-test', function(callback) { |
||
| 249 | runSequence('dist', 'karma', 'codecov', callback); |
||
| 250 | }); |
||
| 251 | |||
| 252 | gulp.task('e2e-test', function(callback) { |
||
| 253 | runSequence('dist', 'protractor', 'disconnect', |
||
| 254 | callback); |
||
| 255 | }); |
||
| 256 | |||
| 257 | gulp.task('test', ['unit-test', 'e2e-test']); |
||
| 258 |