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 deb = require('gulp-debian'); 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')); }; const buildDeb = gulp.series( () => gulp.src('src/client/debian/**/*').pipe(gulp.dest('target/debian')), () => gulp.src('target/linux/**/*').pipe(gulp.dest('target/debian/usr/share/tankz')), () => gulp.src('target/debian/*') .pipe(deb({ package: 'tankz', version: version, section: 'base', priority: 'optional', architecture: 'all', maintainer: 'shmyga ', description: 'Tank\'z', changelog: [], postinst: [ 'if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ] ; then\n' + ' update-menus\n' + 'fi' ], _target: '/', _out: 'target', _clean: false, _verbose: true })) ); 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); exports['client:deb'] = buildDeb; 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 = 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'];