UNPKG

dragonbones-runtime

Version:

the tools to build dragonbones file for diffrent framework

199 lines (165 loc) 5.7 kB
import file = require('../lib/FileUtil'); import service = require('../service/index'); import Project = require('../project'); import path = require('path'); import utils = require('../lib/utils') import modify = require("./upgrade/ModifyProperties"); import doT = require('../lib/doT'); import projectAction = require('../actions/Project'); type VersionInfo = { v: string, command?: { new(): egret.Command } } class UpgradeCommand implements egret.Command { constructor() { } execute(): number { utils.checkEgret(); //5.1.0版本不允许升级 if(true) { globals.exit(1719); } this.run(); return DontExitCode } private async run() { var version = Project.data.getVersion(); if (!version) { version = "1.0.0"; } let upgradeConfigArr: VersionInfo[] = [ { "v": "4.0.1", command: Upgrade_4_0_1 }, { "v": "4.0.3" }, { "v": "4.1.0", command: Upgrade_4_1_0 }, { "v": "5.0.0" }, { "v": "5.0.1", command: Upgrade_5_0_1 }, { "v": "5.0.8", command: Upgrade_5_0_8 }, { "v": "5.0.14" } ]; try { modify.initProperties(); await series(upgrade, upgradeConfigArr.concat()) modify.save(upgradeConfigArr.pop().v); globals.log(1702); await service.client.closeServer(Project.data.getProjectRoot()) globals.exit(0); } catch (e) { globals.log(1717); console.log(e) globals.exit(1705); } } } let series = <T>(cb: (data: T, index?: number, result?: any) => PromiseLike<number>, arr: T[]) => { let parallel = 1; // allow default parallel count of 1 if array // passed as second param (this a good idea?) if (Array.isArray(parallel)) { arr = parallel; parallel = 1; } const results = []; const promises = []; for (var i = 0; i < parallel; i++) promises.push(Promise.resolve()); arr.forEach((item, ix) => { const position = ix % parallel; const promise = promises[position]; promises[position] = promise.then(() => { return Promise.resolve(cb(item, ix, results)) .then(res => results.push(res)); }); }); return Promise.all(promises) .then(() => results); } function upgrade(info: VersionInfo) { var version = Project.data.getVersion(); var v = info.v; var command: egret.Command; if (info.command) { command = new info.command(); } var result = globals.compressVersion(version, v); if (result < 0) { globals.log(1704, v); if (!command) { return Promise.resolve(0); } else { var commandPromise = command.execute(); if (typeof commandPromise == 'number') { console.error('internal error !!!') } else { return commandPromise; } } } else { return Promise.resolve(0) } } class Upgrade_4_0_1 { async execute() { let tsconfigPath = Project.data.getFilePath('tsconfig.json'); if (!file.exists(tsconfigPath)) { let source = file.joinPath(egret.root, "tools/templates/empty/tsconfig.json"); let target = Project.data.getFilePath("tsconfig.json") file.copy(source, target); } let tsconfigContent = file.read(tsconfigPath); let tsconfig = JSON.parse(tsconfigContent); let needLibs = [ "es5", "dom", "es2015.promise" ]; if (!tsconfig.compilerOptions.lib) { tsconfig.compilerOptions.lib = []; } needLibs.forEach(lib => { if (tsconfig.compilerOptions.lib.indexOf(lib) == -1) { tsconfig.compilerOptions.lib.push(lib); } }) tsconfigContent = JSON.stringify(tsconfig, null, "\t"); file.save(tsconfigPath, tsconfigContent); file.copy(path.join(egret.root, 'tools/templates/empty/promise'), Project.data.getFilePath('polyfill')); globals.log(1703, "https://github.com/egret-labs/egret-core/tree/master/docs/cn/release-note/4.0.1") return 0; } } class Upgrade_4_1_0 { /** * 将用户的系统内置模块添加 path 字段,并指向老版本的模块,而非新版本模块 */ async execute() { modify.upgradeModulePath(); globals.log(1703, "https://github.com/egret-labs/egret-core/tree/master/docs/cn/release-note/4.1.0") return 0; } } class Upgrade_5_0_1 { async execute() { let options = egret.args; if (file.exists(file.joinPath(options.projectDir, "polyfill"))) { file.rename(file.joinPath(options.projectDir, "polyfill"), file.joinPath(options.projectDir, "promise")); let jsonPath = file.joinPath(options.projectDir, "egretProperties.json"); let json = JSON.parse(file.read(jsonPath)); let modules = json.modules; modules.push({ name: "promise", path: "./promise" }); file.save(jsonPath, JSON.stringify(json, undefined, "\t")); modify.initProperties(); } return 0; } } class Upgrade_5_0_8 { async execute() { let options = egret.args; if (file.exists(file.joinPath(options.projectDir, "template", "debug"))) { globals.log(1718); file.remove(file.joinPath(options.projectDir, "template", "debug")); } return 0; } } export = UpgradeCommand;