diff --git a/build/client.js b/build/client.js index ea59c0e..1441a3a 100755 --- a/build/client.js +++ b/build/client.js @@ -3,28 +3,30 @@ 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 {Haxe, FlashPlayer} = require('gulp-haxetool'); const version = require('./version'); const prepare = require('./prepare'); const generate = prepare.generate; -const debug = require('./debug'); +const Debug = require('./debug'); const webserver = require('gulp-webserver'); const run = require('gulp-run'); const tail = require('./tail'); const deb = require('gulp-debian'); +const dateformat = require('dateformat'); -const build = (platform, values) => function build() { - const argv = yargs.argv; +const build = (platform, values, debug) => function build() { + const build = dateformat(new Date(), 'yyyy-mm-dd HH:MM:ss'); + let macro = [`CompilationOption.set('build','${build}')`]; + if (debug) macro = macro.concat(debug.macro()); return gulp.src('.') .pipe(new Haxe().openfl({ command: 'build', platform: platform, version: version, - debug: argv.dev, - values: values + debug: debug, + values: {...values, proto_debug:debug}, + macro: macro, })) .pipe(gulp.dest(`target/${platform}`)); }; @@ -99,10 +101,10 @@ exports['client'] = gulp.series( const testFlash = function() { - const argv = yargs.argv; - return build('flash', {proto_debug: true})() - .pipe(new FlashPlayer().run(argv.dev)) - .pipe(debug()); + const debug = new Debug(); + return build('flash', {}, debug)() + .pipe(new FlashPlayer().run(true)) + .pipe(debug.run()); }; const testHtml5 = (dom) => function() { @@ -116,13 +118,16 @@ const testHtml5 = (dom) => function() { )(); }; -const testLinux = gulp.series( - build('linux'), - () => gulp.src('target/linux/tankz') - .pipe(run('./tankz', {cwd: 'target/linux', verbosity: 1})) - .pipe(tail(debug.log)) +const testLinux = () => { + const debug = new Debug(); + return gulp.series( + build('linux', {}, debug), + () => gulp.src('target/linux/tankz') + .pipe(run('./tankz', {cwd: 'target/linux', verbosity: 1})) + .pipe(tail(Debug.log)) //.pipe(gulp.dest('target/log')) -); + )(); +}; diff --git a/build/debug.js b/build/debug.js index 9f32961..cdd4671 100755 --- a/build/debug.js +++ b/build/debug.js @@ -3,6 +3,7 @@ const through = require('through2'); const colors = require('ansi-colors'); const log = require('fancy-log'); + const _colors = { '[DEBUG]': colors.white, '[INFO]': colors.cyan, @@ -19,46 +20,62 @@ const getColor = (line) => { return null;// colors.reset; }; -const _log = (line, color) => { - if (color === undefined) { - color = getColor(line) || colors.white; - } - if (line[0] === '\t') { - console.log(color(line)) - } else { - const result = line.split(' '); - console.log(colors.gray(result.slice(0, 4).join(' ')) + ' ' + color(result.slice(4).join(' '))); - } -}; -module.exports = () => { - return through.obj(function (file, enc, callback) { - const debug = file.debug; - if (!file.debug) { - this.emit('end'); - callback(); - return; +class Debug { + + static log (line, color) { + if (color === undefined) { + color = getColor(line) || colors.white; } - let color = colors.white; - const server = net.createServer((socket) => { - socket.on("data", (data) => { - const lines = data.toString().split('\n'); - for (let line of lines) if (line.length > 2) { - const newColor = getColor(line); - if (newColor != null) color = newColor; - _log(line, color); - } - }); - socket.on("close", () => { - socket.destroy(); - server.close(); + if (line[0] === '\t') { + console.log(color(line)); + } else { + const result = line.split(' '); + console.log(colors.gray(result.slice(0, 4).join(' ')) + ' ' + color(result.slice(4).join(' '))); + } + }; + + constructor() { + this.host = 'localhost'; + this.port = 6000 + Math.floor(Math.random() * 1000); + } + + macro() { + return [ + `CompilationOption.set('debug.address','${this.host}')`, + `CompilationOption.set('debug.port','${this.port}')`, + ]; + }; + + run() { + const debug = this; + return through.obj(function (file, enc, callback) { + if (this.disabled) { this.emit('end'); callback(); + return; + } + let color = colors.white; + const server = net.createServer((socket) => { + socket.on("data", (data) => { + const lines = data.toString().split('\n'); + for (let line of lines) if (line.length > 2) { + const newColor = getColor(line); + if (newColor != null) color = newColor; + Debug.log(line, color); + } + }); + socket.on("close", () => { + socket.destroy(); + server.close(); + this.emit('end'); + callback(); + }); }); - }); - log(colors.green('[debug]'), colors.cyan('listen on'), colors.magenta(`${debug.host}:${debug.port}`)); - server.listen(debug.port, debug.host); - }) -}; + log(colors.green('[debug]'), colors.cyan('listen on'), colors.magenta(`${debug.host}:${debug.port}`)); + server.listen(debug.port, debug.host); + }) + } +} -module.exports.log = _log; +module.exports = Debug; diff --git a/build/editor.js b/build/editor.js index 0227a4a..771997d 100644 --- a/build/editor.js +++ b/build/editor.js @@ -1,33 +1,33 @@ const gulp = require('gulp'); -const yargs = require('yargs'); -const Haxe = require('gulp-haxetool').Haxe; -const FlashPlayer = require('gulp-haxetool').FlashPlayer; +const {Haxe, FlashPlayer} = require('gulp-haxetool'); const version = require('./version'); const prepare = require('./prepare'); -const debug = require('./debug'); +const Debug = require('./debug'); +const dateformat = require('dateformat'); -const build = (platform) => function build() { - const argv = yargs.argv; +const build = (platform, values, debug) => function build() { + const build = dateformat(new Date(), 'yyyy-mm-dd HH:MM:ss'); + let macro = [`CompilationOption.set('build','${build}')`]; + if (debug) macro = macro.concat(debug.macro()); return gulp.src('.') .pipe(new Haxe().openfl({ command: 'build', platform: platform, version: version, - values: { - build_editor: true - }, - debug: argv.dev, + values: {...values, build_editor:true}, + debug: debug, + macro: macro, })) .pipe(gulp.dest(`target/${platform}`)); }; const testFlash = function() { - const argv = yargs.argv; - return build('flash')() - .pipe(new FlashPlayer().run(argv.dev)) - .pipe(debug()); + const debug = new Debug(); + return build('flash', {}, debug)() + .pipe(new FlashPlayer().run(true)) + .pipe(debug.run()); }; diff --git a/build/prepare.js b/build/prepare.js index 605e16c..2f42907 100755 --- a/build/prepare.js +++ b/build/prepare.js @@ -1,16 +1,16 @@ -const ht = require('gulp-haxetool'); +const {Haxe, AdobeAir, FlashPlayer} = require('gulp-haxetool'); const packageInfo = require('../package.json'); const prepareOne = (value) => { switch (value) { - case ht.Haxe.ID: - const haxe = new ht.Haxe(); + case Haxe.ID: + const haxe = new Haxe(); return haxe.prepare().then(() => haxe.install(packageInfo.haxeDependencies)); - case ht.AdobeAir.ID: - return new ht.AdobeAir().prepare(); - case ht.FlashPlayer.ID: - return new ht.FlashPlayer().prepare(); + case AdobeAir.ID: + return new AdobeAir().prepare(); + case FlashPlayer.ID: + return new FlashPlayer().prepare(); default: throw Error(`Unknown target: ${value}`) } @@ -22,11 +22,11 @@ const prepare = (...targets) => function prepare() { }; const update = () => { - return new ht.Haxe().upgrade(); + return new Haxe().upgrade(); }; const generate = () => function generate() { - return new ht.Haxe().haxelib([ + return new Haxe().haxelib([ 'run', 'protohx', 'generate', 'protohx.json' ]); }; diff --git a/build/server.js b/build/server.js index 3ae0500..b386bdc 100755 --- a/build/server.js +++ b/build/server.js @@ -1,16 +1,18 @@ const gulp = require('gulp'); -const yargs = require('yargs'); -const hx = require('gulp-haxetool'); +const {Haxe, Neko} = require('gulp-haxetool'); const version = require('./version'); const prepare = require('./prepare'); const generate = prepare.generate; -const debug = require('./debug'); +const Debug = require('./debug'); +const dateformat = require('dateformat'); -const build = () => function build() { - const argv = yargs.argv; +const build = () => function build(debug) { + const build = dateformat(new Date(), 'yyyy-mm-dd HH:MM:ss'); + let macro = [`CompilationOption.set('build','${build}')`]; + if (debug) macro = macro.concat(debug.macro()); return gulp.src('.') - .pipe(new hx.Haxe().build({ + .pipe(new Haxe().build({ platform: 'neko', version: version, lib: [ @@ -27,21 +29,20 @@ const build = () => function build() { ], main: 'ru.m.tankz.server.Server', outputFile: 'tankz.n', - debug: argv.dev, - values: { - proto_debug: true - } + debug: debug, + macro: macro, + values: {proto_debug: debug} })) .pipe(gulp.dest('target')); }; const test = (build) => function test() { - const argv = yargs.argv; - return build() - .pipe(new hx.Neko().run('localhost')) - .pipe(debug()); + const debug = new Debug(); + return build(debug) + .pipe(new Neko().run('localhost')) + .pipe(debug.run()); }; -exports['server'] = gulp.series(prepare(hx.Haxe.ID), generate(), build()); -exports['server:test'] = gulp.series(prepare(hx.Haxe.ID), generate(), test(build())); +exports['server'] = gulp.series(prepare(Haxe.ID), generate(), build()); +exports['server:test'] = gulp.series(prepare(Haxe.ID), generate(), test(build())); diff --git a/build/webapp.js b/build/webapp.js deleted file mode 100644 index e69de29..0000000 diff --git a/gulpfile.js b/gulpfile.js index 64863fa..9732a8d 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,10 +5,10 @@ const clean = require('gulp-clean'); const Config = require('./config.json'); const prepare = require('./build/prepare'); -const ht = require('gulp-haxetool'); +const {Sdk} = require('gulp-haxetool'); if (Config.SdkDir) { - ht.Sdk.dir = Config.SdkDir; + Sdk.dir = Config.SdkDir; } exports.clean = () => { diff --git a/package.json b/package.json index 77f462d..372fc97 100755 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "gulp-run": "^1.7.1", "gulp-template": "^5.0.0", "gulp-uglify": "^3.0.0", - "gulp-webserver": "^0.9.1" + "gulp-webserver": "^0.9.1", + "dateformat": "^3.0.3" }, "haxeDependencies": { "lime": "6.0.1",