Files
2025-08-04 10:46:00 +08:00

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));
}
}