mirror of
https://github.com/MichMich/MagicMirror.git
synced 2026-06-04 10:19:29 +00:00
Previously, `electronSwitches` only accepted strings. This PR adds
support for object entries, allowing switches with values:
```js
electronSwitches: [
"no-sandbox",
{ "js-flags": "--max-old-space-size=8192" }
]
```
I decided to put the logic into a helper file so it can be unit-tested
independently, since electron.js itself requires a live Electron
environment and cannot be tested in isolation.
Fixes #4159
31 lines
1018 B
JavaScript
31 lines
1018 B
JavaScript
const Log = require("./logger");
|
|
|
|
/**
|
|
* Applies Electron command-line switches from config.
|
|
* @param {object} commandLine Electron commandLine API
|
|
* @param {Array<string|object>} [electronSwitches] User-configured switches
|
|
*/
|
|
function applyElectronSwitches (commandLine, electronSwitches) {
|
|
if (electronSwitches === undefined) return;
|
|
if (!Array.isArray(electronSwitches)) {
|
|
Log.error(`electronSwitches must be an array of strings or objects, got: ${JSON.stringify(electronSwitches)}`);
|
|
return;
|
|
}
|
|
|
|
for (const sw of electronSwitches) {
|
|
if (typeof sw === "string") {
|
|
commandLine.appendSwitch(sw);
|
|
Log.debug(`Activated switch: ${sw}`);
|
|
} else if (sw && typeof sw === "object" && !Array.isArray(sw)) {
|
|
for (const [name, value] of Object.entries(sw)) {
|
|
commandLine.appendSwitch(name, String(value));
|
|
Log.debug(`Activated switch: ${name}=${value}`);
|
|
}
|
|
} else {
|
|
Log.error(`Invalid electronSwitches entry: ${JSON.stringify(sw)}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = { applyElectronSwitches };
|