[project] added packers
This commit is contained in:
@@ -30,9 +30,12 @@ class Config {
|
||||
this.macros = [];
|
||||
this.meta = {
|
||||
title: null,
|
||||
filename: null,
|
||||
icon: null,
|
||||
version: null,
|
||||
pack: null,
|
||||
company:null
|
||||
author: null,
|
||||
company: null
|
||||
};
|
||||
if (params) {
|
||||
this.update(params);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
const gulp = require('gulp');
|
||||
const path = require('path');
|
||||
const os = require('os');
|
||||
const fs = require('fs');
|
||||
const fse = require('fs-extra');
|
||||
//const concat = require('gulp-concat');
|
||||
//const uglify = require('gulp-uglify');
|
||||
//const babel = require('gulp-babel');
|
||||
@@ -11,10 +13,12 @@ const Debug = require('./debug');
|
||||
const webserver = require('gulp-webserver');
|
||||
const run = require('../run/index');
|
||||
const tail = require('./tail');
|
||||
//const deb = require('gulp-debian');
|
||||
const deb = require('gulp-debian');
|
||||
const {BuildSystem, Platform, Config} = require('./core');
|
||||
const vfs = require('vinyl-fs');
|
||||
const rename = require('gulp-rename');
|
||||
const template = require('lodash.template');
|
||||
const mkdirp = require('mkdirp');
|
||||
|
||||
|
||||
const streamToPromise = (stream) => {
|
||||
@@ -61,8 +65,8 @@ class Builder extends Target {
|
||||
Builder.factory[buildSystem] = builder;
|
||||
}
|
||||
|
||||
static new(buildSystem, config) {
|
||||
return new Builder.factory[buildSystem](buildSystem, config);
|
||||
static new(buildSystem) {
|
||||
return new Builder.factory[buildSystem](buildSystem);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,6 +102,98 @@ class HaxeBuilder extends Builder {
|
||||
Builder.register(BuildSystem.HAXE, HaxeBuilder);
|
||||
Builder.register(BuildSystem.OPENFL, HaxeBuilder);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Packer extends Target {
|
||||
|
||||
constructor(platform) {
|
||||
super();
|
||||
this.platform = platform;
|
||||
}
|
||||
|
||||
prepare() {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
call(config) {
|
||||
throw 'Not Implemented';
|
||||
}
|
||||
|
||||
static register(platform, packer) {
|
||||
Packer.factory[platform] = packer;
|
||||
}
|
||||
|
||||
static new(platform) {
|
||||
return new Packer.factory[platform]();
|
||||
}
|
||||
}
|
||||
|
||||
Packer.factory = {};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class FlashPacker extends Packer {
|
||||
|
||||
constructor() {
|
||||
super(Platform.FLASH);
|
||||
}
|
||||
|
||||
call(config) {
|
||||
const target = this.targetPath(config.name, this.platform);
|
||||
const indexTemplate = template(fs.readFileSync(path.resolve(__dirname, '..', 'template/flash/index.html')));
|
||||
const index = indexTemplate(config);
|
||||
fs.writeFileSync(path.resolve(target, 'index.html'), index);
|
||||
fs.copyFileSync(path.resolve(__dirname, '..', 'template/flash/swf.js'), path.resolve(target, 'swf.js'));
|
||||
return Promise.resolve();
|
||||
}
|
||||
}
|
||||
|
||||
Packer.register(Platform.FLASH, FlashPacker);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class LinuxPacker extends Packer {
|
||||
|
||||
constructor() {
|
||||
super(Platform.LINUX);
|
||||
}
|
||||
|
||||
call(config) {
|
||||
const target = this.targetPath(config.name, this.platform);
|
||||
const buildDir = path.join(os.tmpdir(), 'build', config.name, 'debian');
|
||||
const desktopTemplate = template(fs.readFileSync(path.resolve(__dirname, '..', 'template/linux/app.desktop')));
|
||||
const desktop = desktopTemplate(config);
|
||||
mkdirp.sync(`${buildDir}/usr/share/applications`);
|
||||
fs.writeFileSync(`${buildDir}/usr/share/applications/${config.meta.filename}.desktop`, desktop);
|
||||
fse.copySync(`${target}`, `${buildDir}/usr/share/${config.meta.filename}/`);
|
||||
return gulp.src(`${buildDir}/*`)
|
||||
.pipe(deb({
|
||||
package: config.meta.filename,
|
||||
version: config.meta.version,
|
||||
section: 'base',
|
||||
priority: 'optional',
|
||||
architecture: 'all',
|
||||
maintainer: config.meta.author,
|
||||
description: config.meta.title,
|
||||
changelog: [],
|
||||
postinst: [
|
||||
'if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ] ; then\n' +
|
||||
' update-menus\n' +
|
||||
'fi'
|
||||
],
|
||||
_target: '/',
|
||||
_out: path.join(target, '..', 'debian'),
|
||||
_clean: true,
|
||||
_verbose: false
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
Packer.register(Platform.LINUX, LinuxPacker);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -227,28 +323,43 @@ class Project {
|
||||
|
||||
build(platform) {
|
||||
const builder = Builder.new(this.buildSystem);
|
||||
const config = this.config;
|
||||
return [
|
||||
() => builder.prepare(),
|
||||
() => builder.call(platform, this.config)
|
||||
function prepare() { return builder.prepare() },
|
||||
function build() { return builder.call(platform, config) },
|
||||
];
|
||||
}
|
||||
|
||||
run(platform) {
|
||||
const builder = Builder.new(this.buildSystem);
|
||||
const runner = Runner.new(platform, this.config.name);
|
||||
const config = this.config;
|
||||
const debug = new Debug();
|
||||
return [
|
||||
() => builder.prepare(),
|
||||
() => builder.call(platform, this.config, debug),
|
||||
() => runner.prepare(),
|
||||
() => runner.call(debug)
|
||||
function prepare() { return builder.prepare() },
|
||||
function build() { return builder.call(platform, config, debug) },
|
||||
function prepare() { return runner.prepare() },
|
||||
function run() { return runner.call(debug) },
|
||||
];
|
||||
}
|
||||
|
||||
pack(platform) {
|
||||
const config = this.config;
|
||||
const packer = Packer.new(platform);
|
||||
return [
|
||||
function prepare() { return packer.prepare() },
|
||||
function pack() { return packer.call(config) },
|
||||
];
|
||||
}
|
||||
|
||||
bind(module, external_gulp /* ToDo: spike */) {
|
||||
const _gulp = (external_gulp || gulp);
|
||||
for (const platform of this.platforms) {
|
||||
module.exports[`${this.config.name}:${platform}:build`] = (external_gulp || gulp).series(this.build(platform));
|
||||
module.exports[`${this.config.name}:${platform}:run`] = (external_gulp || gulp).series(this.run(platform));
|
||||
module.exports[`${this.config.name}:${platform}:build`] = _gulp.series(this.build(platform));
|
||||
module.exports[`${this.config.name}:${platform}:run`] = _gulp.series(this.run(platform));
|
||||
if (Packer.factory[platform]) {
|
||||
module.exports[`${this.config.name}:${platform}:pack`] = _gulp.series(this.pack(platform, _gulp));
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ class Sdk {
|
||||
if (this.prepared) {
|
||||
return Promise.resolve();
|
||||
} else {
|
||||
mkdirp(this.path);
|
||||
mkdirp.sync(this.path);
|
||||
const bar = new ProgressBar(`${this.tag} [:bar] :percent :etas`, {width: 40, total: 1000, clear: true});
|
||||
let stream = got.stream(this.link);
|
||||
stream = stream.on('downloadProgress', (p) => bar.update(p.percent));
|
||||
|
||||
Reference in New Issue
Block a user