@jasonscheirer/electron-forge-maker-msix
Version:
An `electron-forge` maker for MSIX that supports `electron-forge` v6 and can be used as a replacement for `electron-builder`. Supports code-signing.
58 lines • 2.35 kB
JavaScript
import debug from 'debug';
import { spawn } from 'node:child_process';
export const log = debug('electron-forge:maker:msix');
export const run = async (executable, args, neverFail = false) => {
return new Promise((resolve, reject) => {
const proc = spawn(executable, args, {});
log(`Running ${JSON.stringify([executable].concat(args))}`);
let runningStdout = '';
let collectedStdoutLogForReturn = '';
proc.stdout.on('data', (data) => {
var _a;
collectedStdoutLogForReturn += data;
runningStdout += data;
if (runningStdout.includes('\n')) {
const logLines = runningStdout.split('\n');
while (logLines.length > 1) {
log(`stdout: ${(_a = logLines.shift()) === null || _a === void 0 ? void 0 : _a.trimEnd().replace(/\0/g, '')}`);
}
if (logLines.length > 0) {
runningStdout = logLines[0];
}
}
});
let runningStderr = '';
proc.stderr.on('data', (data) => {
var _a;
runningStderr += data;
if (runningStderr.includes('\n')) {
const logLines = runningStderr.split('\n');
while (logLines.length > 1) {
log(`stderr: ${(_a = logLines.shift()) === null || _a === void 0 ? void 0 : _a.trimEnd().replace(/\0/g, '')}`);
}
if (logLines.length > 0) {
runningStderr = logLines[0];
}
}
});
proc.on('exit', (code) => {
runningStdout
.split('\n')
.forEach((line) => log(`stdout: ${line.trimEnd().replace(/\0/g, '')}`));
runningStderr
.split('\n')
.forEach((line) => log(`stderr: ${line.trimEnd().replace(/\0/g, '')}`));
if (code !== 0) {
if (neverFail) {
log(`warning: ${executable} returned: ${code}`);
}
else {
return reject(new Error(`Running ${executable} returned: ${code}.`));
}
}
return resolve(collectedStdoutLogForReturn);
});
proc.stdin.end();
});
};
//# sourceMappingURL=run.js.map