Files
tankz/build/client.js

136 lines
4.2 KiB
JavaScript
Executable File

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('gulp-haxetool').Haxe;
const FlashPlayer = require('gulp-haxetool').FlashPlayer;
const version = require('./version');
const prepare = require('./prepare');
const generate = prepare.generate;
const debug = require('./debug');
const webserver = require('gulp-webserver');
const run = require('gulp-run');
const tail = require('./tail');
const deb = require('gulp-debian');
const build = (platform, values) => function build() {
const argv = yargs.argv;
return gulp.src('.')
.pipe(new Haxe().openfl({
command: 'build',
platform: platform,
version: version,
debug: argv.dev,
values: values
}))
.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 <shmyga.z@gmail.com>',
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:html5-dom'] = gulp.series(prepare(Haxe.ID), generate(), build('html5', {dom:true}));
exports['client:linux'] = gulp.series(prepare(Haxe.ID), generate(), build('linux'));
exports['client:webapp'] = webapp;
exports['client:deb'] = buildDeb;
exports['client'] = gulp.series(
prepare(Haxe.ID),
generate(),
gulp.parallel(build('flash'), build('html5'), build('linux')),
exports['client:flash:html'],
webapp,
buildDeb,
);
const testFlash = function() {
const argv = yargs.argv;
return build('flash', {proto_debug: true})()
.pipe(new FlashPlayer().run(argv.dev))
.pipe(debug());
};
const testHtml5 = (dom) => function() {
return gulp.series(
build('html5', {dom:dom}),
() => 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), generate(), testFlash);
exports['client:html5:test'] = gulp.series(prepare(Haxe.ID), generate(), testHtml5());
exports['client:html5-dom:test'] = gulp.series(prepare(Haxe.ID), generate(), testHtml5(true));
exports['client:linux:test'] = gulp.series(prepare(Haxe.ID), generate(), testLinux);
exports['client:test'] = exports['client:flash:test'];