dragonbones-runtime
Version:
the tools to build dragonbones file for diffrent framework
79 lines (64 loc) • 2.56 kB
text/typescript
/// <reference path="../lib/types.d.ts" />
import utils = require('../lib/utils');
import server = require('../server/server');
import CompileProject = require('../actions/CompileProject');
import projectAction = require('../actions/Project');
import FileUtil = require('../lib/FileUtil');
import doT = require('../lib/doT');
import * as EgretProject from '../project';
import Clean = require('../commands/clean');
const TemplatesRoot = "tools/templates/";
class Create implements egret.Command {
project: egret.EgretProjectConfig;
async execute() {
var proj = this.project;
var options = egret.args;
let project = EgretProject.data;
projectAction.normalize(proj);
var emptyTemplate = FileUtil.joinPath(egret.root, TemplatesRoot + "empty");
var template = FileUtil.joinPath(egret.root, TemplatesRoot + proj.type);
FileUtil.copy(emptyTemplate, project.getProjectRoot());
FileUtil.copy(template, project.getProjectRoot());
compileTemplate(proj);
project.reload();
new Clean().execute();
console.log(utils.tr(10017));
return Promise.resolve(DontExitCode);
}
}
function compileTemplate(projectConfig: egret.EgretProjectConfig) {
var options = egret.args;
updateEgretProperties(projectConfig);
var files = FileUtil.searchByFunction(options.projectDir, f => f.indexOf("index.html") > 0);
files.forEach(file => {
var content = FileUtil.read(file);
content = doT.template(content)(projectConfig)
FileUtil.save(file, content);
});
}
function updateEgretProperties(projectConfig: egret.EgretProjectConfig) {
let modules = projectConfig.modules;
var propFile = FileUtil.joinPath(egret.args.projectDir, "egretProperties.json");
var jsonString = FileUtil.read(propFile);
var props: egret.EgretProperty = JSON.parse(jsonString);
// props.egret_version = egret.version;
props.template = {};
if (projectConfig.type == "eui") {
//添加eui项目默认配置
props.eui = {
exmlRoot: ["resource/eui_skins"],
themes: ["resource/default.thm.json"],
exmlPublishPolicy: "content"
};
}
else if (projectConfig.type == "wasm") {
props.wasm = {};
}
if (!props.modules) {
props.modules = modules.map(m => ({ name: m.name }));
}
let promise = { name: "promise" };
props.modules.push(promise);
FileUtil.save(propFile, JSON.stringify(props, null, " "));
}
export = Create;