提交subgame插件
This commit is contained in:
176
dist/Main.js
vendored
Normal file
176
dist/Main.js
vendored
Normal file
@@ -0,0 +1,176 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const fs_1 = __importDefault(require("fs"));
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const FeishuHandler_1 = __importDefault(require("./build/handler/FeishuHandler"));
|
||||
const WechatHandler_1 = __importDefault(require("./build/handler/WechatHandler"));
|
||||
const PackagerAndroid_1 = __importDefault(require("./package/PackagerAndroid"));
|
||||
const PackagerWeb_1 = __importDefault(require("./package/PackagerWeb"));
|
||||
const FileUtils_1 = __importDefault(require("./utils/FileUtils"));
|
||||
const MD5Utils_1 = __importDefault(require("./utils/MD5Utils"));
|
||||
const ProcessUtils_1 = __importDefault(require("./utils/ProcessUtils"));
|
||||
(() => __awaiter(void 0, void 0, void 0, function* () {
|
||||
const command = ProcessUtils_1.default.getArg('--run', value => ['package', 'begin', 'end', 'cache'].indexOf(value) >= 0);
|
||||
if (!command) {
|
||||
console.error(`command error: ${command}`);
|
||||
return;
|
||||
}
|
||||
if (command === 'cache') {
|
||||
const url = ProcessUtils_1.default.getArg('--url', value => !!value && value.startsWith('http'));
|
||||
if (!url) {
|
||||
console.error(`illegal parameter --url`);
|
||||
return;
|
||||
}
|
||||
const configCache = path_1.default.join(process.env.HOME || process.env.USERPROFILE, '.sgp', 'config', `${MD5Utils_1.default.md5(url)}.json`);
|
||||
console.log(`config cache: ${configCache}`);
|
||||
return;
|
||||
}
|
||||
const project = ProcessUtils_1.default.getArg('--project', fs_1.default.existsSync);
|
||||
if (!project) {
|
||||
console.error(`illegal parameter --project or file not exists`);
|
||||
return;
|
||||
}
|
||||
const platform = ProcessUtils_1.default.getArg('--platform', value => ['web-mobile', 'android'].indexOf(value) >= 0);
|
||||
if (!project) {
|
||||
console.error(`illegal parameter --platform`);
|
||||
return;
|
||||
}
|
||||
const isolate = ProcessUtils_1.default.haveArg('--isolate');
|
||||
const mode = ProcessUtils_1.default.getArg('--mode', value => ['dev', 'debug', 'release', 'testRelease'].indexOf(value) >= 0);
|
||||
const buildResultCacheFile = path_1.default.join(project, `build_result_${mode}.json`);
|
||||
switch (command) {
|
||||
case 'begin':
|
||||
case 'end':
|
||||
{
|
||||
const key = ProcessUtils_1.default.getArg('--key', value => !!value && !value.startsWith('--'));
|
||||
const robotKey = ProcessUtils_1.default.getArg('--robot-key', value => value && !value.startsWith('--'));
|
||||
if (!robotKey) {
|
||||
console.error(`illegal parameter --robot-key`);
|
||||
break;
|
||||
}
|
||||
const robotType = ProcessUtils_1.default.getArg('--robot-type', value => ['wechat', 'feishu'].indexOf(value.toLocaleLowerCase()) >= 0);
|
||||
if (!robotType) {
|
||||
console.error(`illegal parameter --robot-type`);
|
||||
break;
|
||||
}
|
||||
const data = [];
|
||||
data.push(`平台=${platform}`);
|
||||
mode && data.push(`环境=${mode}`);
|
||||
data.push(`引擎隔离=${isolate ? '开启' : '关闭'}`);
|
||||
if (fs_1.default.existsSync(buildResultCacheFile)) {
|
||||
if (command === 'end') {
|
||||
const cacheContent = fs_1.default.readFileSync(buildResultCacheFile).toString();
|
||||
console.log(`Cache Content: ${cacheContent}`);
|
||||
const buildResult = JSON.parse(cacheContent);
|
||||
if (buildResult.backupTimestamp)
|
||||
data.push(`构建备份=${buildResult.backupTimestamp}`);
|
||||
const results = buildResult.results;
|
||||
results.forEach(result => {
|
||||
results.length > 1 && data.push(`**SubGame - ${result.key}**`);
|
||||
data.push(`框架版本=${result.frameworkVersion}`);
|
||||
data.push(`游戏版本=${result.packageVersion}`);
|
||||
data.push(`新增文件=${result.added}`);
|
||||
data.push(`修改文件=${result.changed}`);
|
||||
data.push(`删除文件=${result.deleted}`);
|
||||
if (result.size >= 0) {
|
||||
data.push(`游戏包大小=${(result.size / 1024 / 1024).toFixed(2)}MB`);
|
||||
if (result.supportVersion && result.supportVersion.length) {
|
||||
if (result.supportVersion.length === 1)
|
||||
data.push(`增量支持版本=${result.supportVersion.shift()}`);
|
||||
else
|
||||
data.push(`增量支持版本=${result.supportVersion.shift()} - ${result.supportVersion.pop()}`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
data.push(`没有需要构建的更新`);
|
||||
}
|
||||
});
|
||||
}
|
||||
FileUtils_1.default.rm(buildResultCacheFile);
|
||||
}
|
||||
const customData = ProcessUtils_1.default.getArg('--data', value => value && !value.startsWith('--'));
|
||||
customData && data.unshift(...customData.split(';'));
|
||||
const handler = new (robotType === 'wechat' ? WechatHandler_1.default : FeishuHandler_1.default)(robotKey, key ? `SubGame - ${key}` : `SubGame In Project`, project, data.join(';'));
|
||||
command === 'begin' ? yield handler.begin() : yield handler.end();
|
||||
}
|
||||
break;
|
||||
case 'package':
|
||||
{
|
||||
const outputDir = path_1.default.join(project, 'build', 'subgame', platform);
|
||||
FileUtils_1.default.rm(outputDir);
|
||||
const buildPath = path_1.default.join(project, 'build', platform === 'android' ? 'jsb-default' : platform, 'assets');
|
||||
const packageAll = ProcessUtils_1.default.haveArg('--all');
|
||||
const keys = [];
|
||||
if (packageAll) {
|
||||
const subGameDir = fs_1.default.readdirSync(buildPath);
|
||||
subGameDir.forEach(dir => {
|
||||
if (dir === 'main' || dir === 'internal' || dir === 'resources' || dir.startsWith('_'))
|
||||
return;
|
||||
const stat = fs_1.default.statSync(path_1.default.join(buildPath, dir));
|
||||
if (stat.isFile())
|
||||
return;
|
||||
keys.push(dir);
|
||||
});
|
||||
}
|
||||
else {
|
||||
const key = ProcessUtils_1.default.getArg('--key', value => fs_1.default.existsSync(path_1.default.join(buildPath, value)));
|
||||
if (!key) {
|
||||
console.error(`illegal parameter --key or file not exists`);
|
||||
break;
|
||||
}
|
||||
keys.push(key);
|
||||
}
|
||||
switch (platform) {
|
||||
case 'android':
|
||||
{
|
||||
if (!mode) {
|
||||
console.error(`illegal parameter --mode`);
|
||||
break;
|
||||
}
|
||||
const xxtea = ProcessUtils_1.default.getArg('--xxtea', value => !!value && !value.startsWith('--')) || '';
|
||||
const zipCompressJs = !!ProcessUtils_1.default.haveArg('--zipCompressJs');
|
||||
const url = ProcessUtils_1.default.getArg('--url', value => !!value && value.startsWith('http'));
|
||||
const codeVersion = ProcessUtils_1.default.getArg('--version', value => !!value);
|
||||
const results = [];
|
||||
for (const key of keys) {
|
||||
const result = yield (0, PackagerAndroid_1.default)(project, key, codeVersion, mode, url, xxtea, zipCompressJs, isolate);
|
||||
result && results.push(result);
|
||||
}
|
||||
const buildResult = { results };
|
||||
const backup = ProcessUtils_1.default.haveArg('--backup');
|
||||
if (backup) {
|
||||
const dateDir = (new Date()).toLocaleString().replace(/[\/\\:]/gm, '-');
|
||||
buildResult.backupTimestamp = dateDir;
|
||||
const backupDir = path_1.default.join(project, '.subgame_bak', dateDir);
|
||||
FileUtils_1.default.copy(outputDir, backupDir);
|
||||
fs_1.default.writeFileSync(path_1.default.join(backupDir, 'build_result.json'), JSON.stringify(results));
|
||||
}
|
||||
FileUtils_1.default.mkdir(path_1.default.dirname(buildResultCacheFile));
|
||||
fs_1.default.writeFileSync(buildResultCacheFile, JSON.stringify(buildResult));
|
||||
console.warn(`save build result ${buildResultCacheFile}`);
|
||||
}
|
||||
break;
|
||||
case 'web-mobile':
|
||||
{
|
||||
for (const key of keys) {
|
||||
(0, PackagerWeb_1.default)(project, key, isolate);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}))();
|
||||
Reference in New Issue
Block a user