const gulp = require('gulp'); const concat = require('gulp-concat'); const uglify = require('gulp-uglify'); const babel = require('gulp-babel'); const template = require('gulp-template'); const yargs = require('yargs'); const Haxe = require('../tasks/haxe'); const FlashPlayer = require('../tasks/flashplayer'); const version = require('./version'); const prepare = require('./prepare'); const debug = require('../tasks/debug'); const webserver = require('gulp-webserver'); const run = require('gulp-run'); const tail = require('../tasks/tail'); const generate = () => function generate() { return new Haxe().haxelib([ 'run', 'protohx', 'generate', 'protohx.json' ]); }; const build = (platform) => function build() { const argv = yargs.argv; return gulp.src('.') .pipe(new Haxe().openfl({ command: 'build', platform: platform, version: version, debug: argv.dev, })) .pipe(gulp.dest(`target/${platform}`)); }; const flashIndex = function() { return gulp.src('src/client/html/index.html') .pipe(template({ scripts: ['app.min.js'], swf: 'tankz.swf' })) .pipe(gulp.dest('target/flash')) }; const flashJs = function() { const src = [ 'src/client/html/js/*.js' ]; return gulp.src(src) .pipe(babel({presets: ['es2015']})) .pipe(uglify()) .pipe(concat('app.min.js')) .pipe(gulp.dest('target/flash')) }; const webapp = function () { return gulp.src('src/webapp/*').pipe(gulp.dest('target')); }; exports['client:flash:html'] = gulp.parallel(flashIndex, flashJs); exports['client:flash'] = gulp.series(prepare(Haxe.ID), generate(), build('flash'), exports['client:flash:html']); exports['client:html5'] = gulp.series(prepare(Haxe.ID), generate(), build('html5')); exports['client:linux'] = gulp.series(prepare(Haxe.ID), generate(), build('linux')); exports['client:webapp'] = webapp; exports['client'] = gulp.series(prepare(Haxe.ID), generate(), gulp.parallel(build('flash'), build('html5')), exports['client:flash:html'], webapp); const testFlash = function() { const argv = yargs.argv; return build('flash')() .pipe(new FlashPlayer().run(argv.dev)) .pipe(debug()); }; const testHtml5 = function() { return gulp.series( build('html5'), () => gulp.src('target/html5').pipe(webserver({ host: 'localhost', port: 3000, open: true, fallback: 'index.html' })) )(); }; const testLinux = function() { const argv = yargs.argv; return gulp.series( build('linux'), () => gulp.src('target/linux/tankz') .pipe(run('./tankz', {cwd: 'target/linux', verbosity: 1})) .pipe(tail(debug.log)) .pipe(gulp.dest('target/log')) )(); }; exports['client:flash:test'] = gulp.series(prepare(Haxe.ID, FlashPlayer.ID), testFlash); exports['client:html5:test'] = gulp.series(prepare(Haxe.ID), testHtml5); exports['client:linux:test'] = gulp.series(prepare(Haxe.ID), testLinux); exports['client:test'] = exports['client:flash:test'];