[build] added gulp builder

This commit is contained in:
2017-12-17 22:29:16 +03:00
parent 823799e8fb
commit 69c2b735a0
24 changed files with 1273 additions and 4 deletions

48
build/client.js Executable file
View File

@@ -0,0 +1,48 @@
"use strict";
const gulp = require('gulp');
const yargs = require('yargs');
const tail = require('../tasks/tail');
const Haxe = require('../tasks/haxe');
const FlashPlayer = require('../tasks/flashplayer');
const version = require('./version');
const dateformat = require('dateformat');
const prepare = require('./prepare');
const debug = require('../tasks/debug');
const build = (params) => function build() {
params = params || {};
const argv = yargs.argv;
const values = {
build: dateformat(new Date(), 'yyyy-mm-dd HH:MM:ss'),
};
let outputFile = 'tankz.swf';
if (params.outputFile) {
outputFile = params.outputFile;
}
if (argv.dev) {
values.dev = true;
if (!values['dev.address']) values['dev.address'] = argv['dev-address'] || 'localhost';
if (!values['dev.port']) values['dev.port'] = argv['dev-port'] || 5000;
}
return gulp.src('.')
.pipe(new Haxe().openfl({
command: 'build',
platform: 'flash',
version: version,
values: values,
outputFile: outputFile,
}))
.pipe(gulp.dest('target'));
};
const test = (build) => function test() {
const argv = yargs.argv;
return build()
.pipe(new FlashPlayer().run(argv.dev))
.pipe(tail(debug.log));
};
exports['client'] = gulp.series(prepare(Haxe.ID), build());
exports['client:test'] = gulp.series(prepare(Haxe.ID, FlashPlayer.ID), test(build()));

39
build/prepare.js Executable file
View File

@@ -0,0 +1,39 @@
const AdobeAir = require('../tasks/adobeAir');
const Haxe = require('../tasks/haxe');
const FlashPlayer = require('../tasks/flashplayer');
const packages = [
{name:'openfl', version:'6.0.1'},
{name:'lime', version:'5.3.0'},
'promhx',
'protohx',
'haxework',
];
const prepareOne = (value) => {
switch (value) {
case Haxe.ID:
const haxe = new Haxe();
return haxe.prepare().then(() => haxe.install(packages));
case AdobeAir.ID:
return new AdobeAir().prepare();
case FlashPlayer.ID:
return new FlashPlayer().prepare();
default:
throw Error(`Unknown target: ${value}`)
}
};
const prepare = (...targets) => function prepare() {
const tasks = targets.map((target) => prepareOne(target));
return Promise.all(tasks);
};
const update = () => {
return new Haxe().upgrade();
};
module.exports = prepare;
module.exports.update = update;

63
build/server.js Executable file
View File

@@ -0,0 +1,63 @@
"use strict";
const gulp = require('gulp');
const yargs = require('yargs');
const tail = require('../tasks/tail');
const Haxe = require('../tasks/haxe');
const FlashPlayer = require('../tasks/flashplayer');
const Neko = require('../tasks/neko');
const version = require('./version');
const dateformat = require('dateformat');
const prepare = require('./prepare');
const debug = require('../tasks/debug');
const build = (params) => function build() {
params = params || {};
const argv = yargs.argv;
const values = {
build: dateformat(new Date(), 'yyyy-mm-dd h:MM:ss'),
};
let outputFile = 'tankz.n';
if (params.outputFile) {
outputFile = params.outputFile;
}
if (argv.dev) {
values.dev = true;
if (!values['dev.address']) values['dev.address'] = argv['dev-address'] || 'localhost';
if (!values['dev.port']) values['dev.port'] = argv['dev-port'] || 5000;
}
return gulp.src('.')
.pipe(new Haxe().build({
platform: 'neko',
version: version,
values: values,
lib: [
'protohx',
'orm',
'haxework',
],
cp: [
'src/common/haxe',
'src/server/haxe',
'src-gen/haxe',
],
macro: [
`CompilationOption.set('debug.address','${values['dev.address']}')`,
`CompilationOption.set('debug.port','${values['dev.port']}')`,
],
main: 'ru.m.tankz.server.Server',
outputFile: outputFile,
}))
.pipe(gulp.dest('target'));
};
const test = (build) => function test() {
const argv = yargs.argv;
return build()
.pipe(new Neko().run(argv.dev))
.pipe(debug());
};
exports['server'] = gulp.series(prepare(Haxe.ID), build());
exports['server:test'] = gulp.series(prepare(Haxe.ID, FlashPlayer.ID), test(build()));

2
build/version.js Normal file
View File

@@ -0,0 +1,2 @@
const packageInfo = require('../package.json');
module.exports = packageInfo.version;