141 lines
4.2 KiB
JavaScript
Executable File
141 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('../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, 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')()
|
|
.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), testFlash);
|
|
exports['client:html5:test'] = gulp.series(prepare(Haxe.ID), testHtml5());
|
|
exports['client:html5-dom:test'] = gulp.series(prepare(Haxe.ID), testHtml5(true));
|
|
exports['client:linux:test'] = gulp.series(prepare(Haxe.ID), testLinux);
|
|
exports['client:test'] = exports['client:flash:test'];
|
|
|
|
|