mirror of
https://github.com/msojocs/wx-compiler.git
synced 2025-07-19 00:00:04 +08:00
91 lines
2.7 KiB
JavaScript
Executable File
91 lines
2.7 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
// wcsc.exe md5 = "d45f45f109afa238cd83c8ad1d0e2a5e"
|
|
const version = "20220423";
|
|
const { spawn } = require("child_process");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const args = process.argv.slice(2);
|
|
const wcscPath = path.resolve(__dirname, "./wcsc.bin");
|
|
const DEBUG_OUTPUT = process.env["WX_DEBUG_COMPILER_OUTPUT"];
|
|
|
|
// 向错误输出流写入信息
|
|
process.stderr.write(`环境及执行信息:
|
|
编译器版本: ${version}
|
|
node版本: ${process.version}
|
|
参数: ${args.join(' ')}
|
|
|
|
具体报错:
|
|
`);
|
|
|
|
function encode1(s) {
|
|
return encodeURI(s).replace(
|
|
/%(u[0-9A-F]{4})|(%[0-9A-F]{2})/gm,
|
|
function ($0, $1, $2) {
|
|
return ($1 && "\\" + $1.toLowerCase()) || decodeURI($2);
|
|
}
|
|
);
|
|
}
|
|
if (args.includes("-ll")) {
|
|
const wcsc = spawn(wcscPath, args, {
|
|
cwd: process.cwd(),
|
|
});
|
|
const spwanData = [],
|
|
errData = [];
|
|
wcsc.stdout.on("data", (e) => {
|
|
spwanData.push(e);
|
|
});
|
|
wcsc.stderr.on("data", (e) => {
|
|
errData.push(e);
|
|
});
|
|
wcsc.on("close", (n) => {
|
|
if (0 === n) {
|
|
let str = Buffer.concat(spwanData).toString();
|
|
DEBUG_OUTPUT &&
|
|
fs.writeFileSync(`${DEBUG_OUTPUT}/linux_output.js`, str);
|
|
const resultSplit = str.split("=");
|
|
const tempObj = {};
|
|
for (
|
|
let i = 0, total = resultSplit.length;
|
|
i < total && resultSplit[i + 1];
|
|
i += 2
|
|
) {
|
|
// a=b ---> a: b
|
|
const key = resultSplit[i];
|
|
if (key === "version") continue;
|
|
tempObj[key] = resultSplit[i + 1].replace(
|
|
/[^\\]((\\x[\da-f]{2}|\\u[\da-f]{4})){1,}/g,
|
|
function ($0, $1, $2) {
|
|
return eval('"' + $0 + '"');
|
|
}
|
|
);
|
|
}
|
|
const resultObj = {
|
|
common: tempObj.comm,
|
|
pageWxss: {},
|
|
};
|
|
for (const key in tempObj) {
|
|
if (key.endsWith(".wxss")) {
|
|
resultObj.pageWxss[key] = tempObj[key];
|
|
}
|
|
}
|
|
let result = JSON.stringify(resultObj);
|
|
result = result.replace(/\\\\/g, "\\");
|
|
process.stdout.write(result);
|
|
} else {
|
|
const err = Buffer.concat(errData).toString();
|
|
DEBUG_OUTPUT &&
|
|
fs.writeFileSync(`${DEBUG_OUTPUT}/linux_err.js`, err);
|
|
process.stderr.write(err);
|
|
process.exitCode = n;
|
|
}
|
|
});
|
|
} else {
|
|
const wcsc = spawn(wcscPath, args, {
|
|
cwd: process.cwd(),
|
|
stdio: "inherit",
|
|
});
|
|
wcsc.on("close", (code) => {
|
|
process.exitCode = code;
|
|
});
|
|
}
|