fy-convertor
Version:
Convert excel/xml/json/bin/protocl/ts/as ...
108 lines • 4.52 kB
JavaScript
import path from 'path';
import ini from 'ini';
import fs from 'fs-extra';
import { SvnHolder } from './core/SvnHolder.js';
import { Xml2Json } from './core/Xml2Json.js';
import { Xml2Ts } from './core/Xml2Ts.js';
import { Xml2Protocol } from './core/Xml2Protocol.js';
import { Alert } from './tools/alert.js';
import { toolchain } from './tools/toolchain.js';
import { Xls2Xml } from './core/Xls2Xml.js';
import { Hudson } from './tools/hudson.js';
export class Convertor {
version;
constructor(version) {
this.version = version;
}
async execute(replyMsgId) {
// if(toolchain.options.cmd == 'xls2xml') {
// await Xls2Xml.Instance.execute();
// return;
// }
// 检查cfg配置
const env = process.env;
// 读入项目配置,兼容.ini和.json两种格式
const projCfgIni = path.join(env.CFG_LOCAL, toolchain.options.project + '.ini');
const projCfgJson = path.join(env.CFG_LOCAL, toolchain.options.project + '.json');
let projCfg;
if (fs.existsSync(projCfgJson)) {
projCfg = await fs.readJson(projCfgJson);
}
else if (fs.existsSync(projCfgIni)) {
const iniContent = await fs.readFile(projCfgIni, 'utf-8');
projCfg = ini.parse(iniContent);
if (projCfg.xml2json?.treeShakeRules || projCfg.xml2json?.diffValueRules) {
// .ini格式不支持treeShakeRules和diffValueRules,需转为json格式
console.error(`[ERROR]TreeShakeRules and diffValueRules are not supported in ini. Use json format configuration to define treeShakeRules or diffValueRules: ${projCfgJson}`);
process.exit(1);
}
}
else {
console.error(`[ERROR]Both project configuration .ini and .json file not found: ${projCfgIni} or ${projCfgJson}`);
process.exit(1);
}
toolchain.projCfg = projCfg;
console.log(projCfg);
if (projCfg.Project.chatid)
Alert.Instance.setChatId(projCfg.Project.chatid);
// 读取版本记录
const tmpFolder = toolchain.options.publish ? toolchain.options.project + '_publish' : toolchain.options.project;
const verFile = path.join(toolchain.options.workspace, tmpFolder, `${toolchain.options.cmd}.ver`);
if (fs.existsSync(verFile)) {
const oldVer = fs.readFileSync(verFile, 'utf-8');
if (oldVer !== this.version) {
console.log(`fy-convertor has been updated to ${this.version}, set force!`);
toolchain.options.force = true;
}
}
else {
console.log(`no version file found, set force!`);
toolchain.options.force = true;
}
await fs.ensureDir(path.dirname(verFile));
fs.writeFileSync(verFile, this.version, 'utf-8');
if (toolchain.options.cmd == 'xml2json') {
await Xml2Json.Instance.execute();
}
else if (toolchain.options.cmd == 'xml2ts') {
await Xml2Ts.Instance.execute();
}
else if (toolchain.options.cmd == 'xml2protocol') {
await Xml2Protocol.Instance.execute();
}
else if (toolchain.options.cmd == 'xls2xml') {
await Xls2Xml.Instance.execute();
if (toolchain.options.xml2json) {
await Xml2Json.Instance.execute();
}
return;
}
else {
console.error(`[ERROR]cmd not support: ${toolchain.options.cmd}`);
process.exit(1);
}
let res = '';
const files = SvnHolder.Instance.getLastCommitFiles();
if (files.length > 0) {
res = `更新了${files.length}个文件:${files.map(f => path.basename(f)).join(',')}。`;
}
else {
res = '更新了0个文件。';
}
const logLink = Hudson.getLogUrl();
let msg = `${toolchain.options.cmd} #${Hudson.getBuildNumber()} 已完成。`;
if (res) {
msg += `\n${res}`;
}
msg += `[点击查看日志](${logLink})`;
if (replyMsgId) {
await Alert.Instance.sendTextMsg(msg, replyMsgId);
}
else {
if (res) {
await Alert.Instance.sendTextMsg(msg);
}
}
}
}
//# sourceMappingURL=Convertor.js.map