diff --git a/index.js b/index.js index 47d1687..557904f 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,7 @@ const readline = require("readline/promises"); const integration = require("./js/integration"); const hardware = require("./js/hardware"); const webview = require("./js/webview"); +const log = require("electron-log"); const { app } = require("electron"); const Events = require("events"); @@ -26,7 +27,7 @@ if (!process.env.DISPLAY) { * initialization tasks. */ app.whenReady().then(async () => { - if (!(await initApp()) || !(await initArgs())) { + if (!(await initApp()) || !(await initArgs()) || !(await initLog())) { return; } @@ -60,6 +61,7 @@ const initApp = async () => { APP.version = app.getVersion(); APP.path = app.getAppPath(); APP.config = app.getPath("userData"); + APP.log = path.join(app.getPath("logs"), "main.log"); // Set additional update infos APP.homepage = `https://github.com/${packageJson.author}/${packageJson.name}`; @@ -135,6 +137,29 @@ const initArgs = async () => { return true; }; +/** + * Initializes the global log object. + * + * @returns {bool} Returns true if the initialization was successful. + */ +const initLog = async () => { + try { + if (fs.existsSync(APP.log)) { + fs.unlinkSync(APP.log); + } + } catch (error) { + console.error("Failed to delete log file:", error.message); + } + + // Overwrite console log settings + log.transports.file.resolvePathFn = () => { + return APP.log; + }; + Object.assign(console, log.functions); + + return true; +}; + /** * Parses command-line arguments from the given process object. * diff --git a/js/hardware.js b/js/hardware.js index 7cb105b..80b9c80 100644 --- a/js/hardware.js +++ b/js/hardware.js @@ -37,7 +37,7 @@ global.HARDWARE = global.HARDWARE || { */ const init = async () => { if (!compatibleSystem()) { - console.warn("Operating system is not supported\n"); + console.error("Operating system is not supported"); return false; } @@ -54,33 +54,35 @@ const init = async () => { HARDWARE.initialized = true; // Show supported features - console.log(`\nSupported: ${JSON.stringify(HARDWARE.support, null, 2)}`); + process.stdout.write("\n"); + console.log(`Supported: ${JSON.stringify(HARDWARE.support, null, 2)}`); // Show session infos - console.log("\nUser:", HARDWARE.session.user); + process.stdout.write("\n"); + console.log("User:", HARDWARE.session.user); console.log("Session:", HARDWARE.session.type); console.log("Desktop:", HARDWARE.session.desktop); // Show device infos - console.log("\nModel:", getModel()); + process.stdout.write("\n"); + console.log("Model:", getModel()); console.log("Vendor:", getVendor()); console.log("Serial Number:", getSerialNumber()); console.log("Network Addresses:", getNetworkAddresses()); console.log("Host Name:", getHostName()); // Show system infos - console.log("\nUp Time:", getUpTime()); + process.stdout.write("\n"); + console.log("Up Time:", getUpTime()); console.log("Memory Size:", getMemorySize()); console.log("Memory Usage:", getMemoryUsage()); console.log("Processor Usage:", getProcessorUsage()); console.log("Processor Temperature:", getProcessorTemperature()); // Show hardware infos + process.stdout.write("\n"); const unsupported = "unsupported"; - console.log( - `\nBattery Level [${HARDWARE.battery.level.path || unsupported}]:`, - `${getBatteryLevel() || unsupported}`, - ); + console.log(`Battery Level [${HARDWARE.battery.level.path || unsupported}]:`, `${getBatteryLevel() || unsupported}`); console.log( `Display Status [${HARDWARE.display.status.path || unsupported}]:`, `${getDisplayStatus() || unsupported} (${HARDWARE.display.status.command || unsupported})`, @@ -91,10 +93,11 @@ const init = async () => { ); console.log( `Keyboard Visibility [${HARDWARE.support.keyboardVisibility ? "squeekboard" : unsupported}]:`, - `${getKeyboardVisibility() || unsupported}\n`, + `${getKeyboardVisibility() || unsupported}`, ); // Check for keyboard visibility + process.stdout.write("\n"); setKeyboardVisibility("OFF", (reply, error) => { if (!reply || error) { return; diff --git a/js/integration.js b/js/integration.js index 7b48791..107a3b6 100644 --- a/js/integration.js +++ b/js/integration.js @@ -57,7 +57,8 @@ const init = async () => { // Client connected INTEGRATION.client .once("connect", () => { - console.log(`MQTT Connected: ${url.toString()}\n`); + console.log(`MQTT Connected: ${url.toString()}`); + process.stdout.write("\n"); // Init client controls initApp();