Improved args parsing in and out of AppImage

This commit is contained in:
itdominator 2025-06-08 22:21:24 -05:00
parent b11e8bb74a
commit 9156033f22
3 changed files with 108 additions and 36 deletions

View File

@ -2,6 +2,7 @@ const { BrowserWindow } = require('electron');
const path = require('node:path'); const path = require('node:path');
const { menu } = require('./menu'); const { menu } = require('./menu');
const { argsParser } = require('./args-parser');
const { settingsManager } = require('./settings-manager'); const { settingsManager } = require('./settings-manager');
const { newtonFs } = require('./fs'); const { newtonFs } = require('./fs');
@ -72,7 +73,6 @@ const createWindow = (startType = "build", debug = false, args = []) => {
// }); // });
return win; return win;
} }
@ -80,7 +80,8 @@ const createWindow = (startType = "build", debug = false, args = []) => {
module.exports = { module.exports = {
newton: { newton: {
createWindow: createWindow, createWindow: createWindow,
args: argsParser,
settings: settingsManager,
fs: newtonFs, fs: newtonFs,
settings: settingsManager
} }
}; };

94
newton/args-parser.js Normal file
View File

@ -0,0 +1,94 @@
const { app } = require('electron');
let startType = "build";
let isDebug = false;
let args = [];
const loadKWArgs = () => {
console.log("\n\nStart KWArgs:");
const hasStartAs = app.commandLine.hasSwitch("start-as");
if (hasStartAs) {
startType = app.commandLine.getSwitchValue("start-as");
console.log("Has start-as switch...");
console.log(startType);
}
const hasDebug = app.commandLine.hasSwitch("app-debug");
if (hasDebug) {
isDebug = app.commandLine.getSwitchValue("app-debug");
console.log("Has app-debug switch...");
console.log(isDebug);
}
}
const loadVArgs = () => {
console.log("\n\nStart VArgs:");
if (
process.argv[0].endsWith("electron")
) {
process.argv = process.argv.slice(2);
}
if (
process.argv[0].endsWith("/newton") ||
process.argv[0].endsWith(".AppImage")
) {
process.argv = process.argv.slice(1);
}
if ( process.argv.length > 0 && (
process.argv[0].includes("--trace-warnings") ||
process.argv[0].includes("--start-as")
)
) {
process.argv = process.argv.slice(1);
}
if ( process.argv.length > 0 && (
process.argv[0].includes("--trace-warnings") ||
process.argv[0].includes("--start-as")
)
) {
process.argv = process.argv.slice(1);
}
args = process.argv;
args.forEach((val, index, array) => {
console.log(index + ': ' + val);
});
console.log("\n\n");
}
const loadArgs = () => {
loadKWArgs();
loadVArgs();
}
const getArgs = () => {
return args;
}
const getStartType = () => {
return startType;
}
const debugMode = () => {
return isDebug;
}
module.exports = {
argsParser: {
loadArgs: loadArgs,
getArgs: getArgs,
getStartType: getStartType,
debugMode: debugMode,
}
};

View File

@ -9,37 +9,6 @@ const { newton } = require('./app');
let startType = "";
let isDebug = false;
let args = [];
const loadArgs = () => {
console.log("\n\nStart KArgs:");
const hasStartAs = app.commandLine.hasSwitch("start-as");
if (hasStartAs) {
startType = app.commandLine.getSwitchValue("start-as");
console.log("Has start-as switch...");
console.log(startType);
}
const hasDebug = app.commandLine.hasSwitch("app-debug");
if (hasDebug) {
isDebug = app.commandLine.getSwitchValue("app-debug");
console.log("Has app-debug switch...");
console.log(isDebug);
}
console.log("\n\nStart VArgs:");
args = process.argv.slice(4); // remove up to --start-as ...
args.forEach((val, index, array) => {
console.log(index + ': ' + val);
});
console.log("\n\n");
}
const loadHandlers = () => { const loadHandlers = () => {
ipcMain.handle('getLspConfigData', (eve) => newton.fs.getLspConfigData()); ipcMain.handle('getLspConfigData', (eve) => newton.fs.getLspConfigData());
ipcMain.handle('getFileContents', (eve, file) => newton.fs.getFileContents(file)); ipcMain.handle('getFileContents', (eve, file) => newton.fs.getFileContents(file));
@ -50,17 +19,25 @@ const loadHandlers = () => {
app.whenReady().then(() => { app.whenReady().then(() => {
loadArgs(); newton.args.loadArgs();
loadHandlers(); loadHandlers();
newton.settings.loadsettings(); newton.settings.loadsettings();
let window = newton.createWindow(startType, isDebug, args); let window = newton.createWindow(
newton.args.getStartType(),
newton.args.debugMode(),
newton.args.getArgs(),
);
newton.fs.setWindow(window); newton.fs.setWindow(window);
}); });
app.on('activate', () => { app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) { if (BrowserWindow.getAllWindows().length === 0) {
newton.createWindow(startType, isDebug, args); newton.createWindow(
newton.args.getStartType(),
newton.args.debugMode(),
newton.args.getArgs(),
);
}; };
}); });