49 lines
1.9 KiB
TypeScript
49 lines
1.9 KiB
TypeScript
import path from "path";
|
|
import fs from 'fs';
|
|
import { Config, SubpackageConfig } from "./Config";
|
|
import { ItemHandler } from "./ItemHandler";
|
|
import { Utils } from "./Utils";
|
|
|
|
|
|
|
|
export default class Handler {
|
|
|
|
private projectDir: string;
|
|
private codeVersion: string;
|
|
private mode: string;
|
|
private config: Config;
|
|
|
|
constructor(projectDir: string, configPath: string, codeVersion: string, mode: string, xxtea?: string) {
|
|
this.projectDir = projectDir;
|
|
this.codeVersion = codeVersion;
|
|
this.mode = mode;
|
|
this.config = new Config(projectDir, configPath);
|
|
}
|
|
|
|
public async make(): Promise<void> {
|
|
|
|
let subpackageConfigs: SubpackageConfig[] = this.config.getSubpackageConfig();
|
|
let config: { [key: string]: { version: number, des: string, name: string, size: { version: number, size: number }[] } } = {};
|
|
let pickFiles: string[] = [];
|
|
|
|
for (let subpackageConfig of subpackageConfigs) {
|
|
let itemHandler = new ItemHandler(this.projectDir, this.mode, subpackageConfig);
|
|
let result = await itemHandler.handle();
|
|
let itemInfo = result.info;
|
|
config[subpackageConfig.key] = { version: itemInfo.version, size: itemInfo.size, des: subpackageConfig.des, name: subpackageConfig.name };
|
|
pickFiles.push(...result.pickFiles);
|
|
}
|
|
while (pickFiles.length) {
|
|
const file = pickFiles.shift();
|
|
if (fs.existsSync(file)) {
|
|
Utils.log(`Delete ${file}`, Utils.LogLevel.Particular);
|
|
fs.unlinkSync(file!);
|
|
}
|
|
}
|
|
let configFileName = `subpackage_config_${this.codeVersion}.json`;
|
|
let configFiltPath = path.join(this.projectDir, 'build', 'subpackage', 'build', configFileName);
|
|
Utils.mkdir(path.dirname(configFiltPath));
|
|
fs.writeFileSync(configFiltPath, JSON.stringify(config));
|
|
}
|
|
}
|