wx-compiler/test/runner/binary-windows.ts
msojocs 754a09886e
chore: 使用新的CI流程 (#11)
* fix: wine environment

* fix: wine environment

* fix: environment

* perf: remove recommend

* fix: env

* Update release.yml

* fix: permission of wcsc.exe

* fix: 一处越界问题

* fix: pnpm install

* fix: wine prepare

* fix: wine cfg

* feat: error console

* fix: 兼容clang

* perf: 调整位置

* perf: 带入环境

* fix: version

* perf: log

* fix: version check

* fix: version
2025-01-22 16:55:30 +08:00

94 lines
2.7 KiB
TypeScript

import { spawn } from "child_process";
import path from "path";
import * as fs from 'fs'
const wcsc = (args: string[], projectPath: string): Promise<string> => {
if(!fs.existsSync(projectPath)){
throw new Error('projectPath not exists.')
}
const wine = spawn(
path.resolve(__dirname, "../wine/wcsc.exe"),
args,
{
cwd: projectPath,
}
);
const spwanData: any[] = [],
errData: any[] = [];
wine.stdout.on("data", (e) => {
spwanData.push(e);
});
wine.stderr.on("data", (e) => {
errData.push(e);
});
return new Promise((resolve, reject) => {
wine.on("close", (n) => {
// console.log("wine n: ", n);
if (0 === n) {
let result = Buffer.concat(spwanData).toString();
// result = JSON.parse(result);
resolve(result);
} else {
process.stderr.write(
"wine error:" +
Buffer.concat(errData).toString()
);
// process.stderr.write(Buffer.concat(spwanData).toString());
reject(n);
}
});
});
};
const wcc = (args: string[], projectPath: string): Promise<string> => {
if(!fs.existsSync(projectPath)){
throw new Error('projectPath not exists.')
}
const wine = spawn(
path.resolve(__dirname, "../wine/wcc.exe"),
args,
{
cwd: projectPath,
env: process.env,
}
);
const spwanData: any[] = [],
errData: any[] = [];
wine.stdout.on("data", (e) => {
spwanData.push(e);
});
wine.stderr.on("data", (e) => {
errData.push(e);
});
return new Promise((resolve, reject) => {
wine.on("close", (n) => {
// console.log("wine n: ", n);
const errMsg = Buffer.concat(errData).toString()
if (0 === n || errMsg.length == 0) {
let result = Buffer.concat(spwanData).toString();
// result = JSON.parse(result);
resolve(result);
} else {
process.stderr.write(
"wine error:\n" +
Buffer.concat(errData).toString()
);
process.stderr.write(
"stdout:\n" +
Buffer.concat(spwanData).toString()
);
// process.stderr.write(Buffer.concat(spwanData).toString());
reject({
code: n,
stdout: Buffer.concat(spwanData).toString(),
stderr: Buffer.concat(errData).toString(),
});
}
});
});
};
export default {
wcsc,
wcc
}