mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-28 12:12:20 +00:00
I felt like adding a spell checker, but it's okay if you find it superfluous. At least then we could fix the found spell issues. What is still missing is an automatic integration so that the spell checker does not have to be called manually. Would it perhaps make sense to always do it before a release?
71 lines
2.9 KiB
JavaScript
71 lines
2.9 KiB
JavaScript
const execSync = require("node:child_process").execSync;
|
|
const path = require("node:path");
|
|
|
|
const rootPath = path.resolve(`${__dirname}/../`);
|
|
const Log = require(`${rootPath}/js/logger.js`);
|
|
const os = require("node:os");
|
|
const fs = require("node:fs");
|
|
const si = require("systeminformation");
|
|
|
|
const modulePositions = []; // will get list from index.html
|
|
const regionRegEx = /"region ([^"]*)/i;
|
|
const indexFileName = "index.html";
|
|
const discoveredPositionsJSFilename = "js/positions.js";
|
|
|
|
module.exports = {
|
|
|
|
async logSystemInformation () {
|
|
try {
|
|
let installedNodeVersion = execSync("node -v", { encoding: "utf-8" }).replace("v", "").replace(/(?:\r\n|\r|\n)/g, "");
|
|
|
|
const staticData = await si.get({
|
|
system: "manufacturer, model, raspberry, virtual",
|
|
osInfo: "platform, distro, release, arch",
|
|
versions: "kernel, node, npm, pm2"
|
|
});
|
|
let systemDataString = "System information:";
|
|
systemDataString += `\n### SYSTEM: manufacturer: ${staticData["system"]["manufacturer"]}; model: ${staticData["system"]["model"]}; virtual: ${staticData["system"]["virtual"]}`;
|
|
systemDataString += `\n### OS: platform: ${staticData["osInfo"]["platform"]}; distro: ${staticData["osInfo"]["distro"]}; release: ${staticData["osInfo"]["release"]}; arch: ${staticData["osInfo"]["arch"]}; kernel: ${staticData["versions"]["kernel"]}`;
|
|
systemDataString += `\n### VERSIONS: electron: ${process.versions.electron}; used node: ${staticData["versions"]["node"]}; installed node: ${installedNodeVersion}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}`;
|
|
systemDataString += `\n### OTHER: timeZone: ${Intl.DateTimeFormat().resolvedOptions().timeZone}; ELECTRON_ENABLE_GPU: ${process.env.ELECTRON_ENABLE_GPU}`;
|
|
Log.info(systemDataString);
|
|
|
|
// Return is currently only for jest
|
|
return systemDataString;
|
|
} catch (e) {
|
|
Log.error(e);
|
|
}
|
|
},
|
|
|
|
// return all available module positions
|
|
getAvailableModulePositions () {
|
|
return modulePositions;
|
|
},
|
|
|
|
// return if position is on modulePositions Array (true/false)
|
|
moduleHasValidPosition (position) {
|
|
if (this.getAvailableModulePositions().indexOf(position) === -1) return false;
|
|
return true;
|
|
},
|
|
|
|
getModulePositions () {
|
|
// get the lines of the index.html
|
|
const lines = fs.readFileSync(indexFileName).toString().split(os.EOL);
|
|
// loop thru the lines
|
|
lines.forEach((line) => {
|
|
// run the regex on each line
|
|
const results = regionRegEx.exec(line);
|
|
// if the regex returned something
|
|
if (results && results.length > 0) {
|
|
// get the position parts and replace space with underscore
|
|
const positionName = results[1].replace(" ", "_");
|
|
// add it to the list
|
|
modulePositions.push(positionName);
|
|
}
|
|
});
|
|
fs.writeFileSync(discoveredPositionsJSFilename, `const modulePositions=${JSON.stringify(modulePositions)}`);
|
|
// return the list to the caller
|
|
return modulePositions;
|
|
}
|
|
};
|