From f7d345b4ea1ac8a470f71d61a5449a7f8bb36570 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Sun, 13 Dec 2020 04:12:12 +0300 Subject: [PATCH] a bit better arg handling... Signed-off-by: Alex A. Naanou --- Viewer/e.js | 19 +++++++++++-------- Viewer/features/cli.js | 16 ++++++++++++++-- Viewer/ig.js | 6 ++---- Viewer/package-lock.json | 12 +++++++++--- Viewer/package.json | 5 +++-- 5 files changed, 39 insertions(+), 19 deletions(-) diff --git a/Viewer/e.js b/Viewer/e.js index e3c6dfa7..ca7a249c 100644 --- a/Viewer/e.js +++ b/Viewer/e.js @@ -23,6 +23,13 @@ var VERSION = require('./version').version var app = electron.app var BrowserWindow = electron.BrowserWindow +// +global.ELECTRON_PACKAGED = app.isPackaged + +// used to let e.js know that the CLI wants to start the GUI.. +global.START_GUI = false + + /*********************************************************************/ @@ -154,14 +161,10 @@ app.on('window-all-closed', function(){ //--------------------------------------------------------------------- // start things up... -global.START_GUI = false - -var argv1 = process.argv[1] - && path.resolve(process.cwd(), process.argv[1]) - -;(process.argv.length > 2 - || (argv1 && argv1 != require.main.filename)) ? - // got some arguments -- trigger ig.js... +;(ELECTRON_PACKAGED ? + process.argv.length > 1 + : process.argv.length > 2) ? + // got some arguments -- delegate to ig.js... (require('./ig') && global.START_GUI && start()) diff --git a/Viewer/features/cli.js b/Viewer/features/cli.js index 1ca92dcd..8b0bc871 100755 --- a/Viewer/features/cli.js +++ b/Viewer/features/cli.js @@ -117,6 +117,7 @@ var CLIActions = actions.Actions({ var bar = state.bar = state.bar || container.create(0, 0, {text: text.padEnd(l)}) + // XXX for some reason this does not work under electron... bar.setTotal(Math.max(max, value)) bar.update(value) }], @@ -178,7 +179,10 @@ var CLIActions = actions.Actions({ // Startup commands... // startREPL: ['- System/Start CLI interpreter', - {cli: '@repl'}, + {cli: { + name: '@repl', + interactive: true, + }}, function(){ var that = this var repl = nodeRequire('repl') @@ -214,6 +218,7 @@ var CLIActions = actions.Actions({ // XXX move this to a feature that requires electron... // ...and move electron to an optional dependency... // XXX should we require electron or npx electron??? + // XXX add --dev-tools flag... startGUI: ['- System/Start viewer GUI', core.doc` @@ -469,12 +474,14 @@ module.CLI = core.ImageGridFeatures.Feature({ function(){ var that = this + //var pkg = require('package.json') var pkg = nodeRequire('./package.json') var wait_for = [] + // XXX + var interactive = false argv.Parser({ context: this, - script: nodeRequire.main.filename, // XXX argv.js is not picking these up because // of the require(..) mixup... @@ -511,6 +518,11 @@ module.CLI = core.ImageGridFeatures.Feature({ action : (cmd.key || cmd.name) + // skip interactive commands in non-interactive + // contexts... + if(!interactive && cmd.interactive){ + return res } + res[name] = cmd instanceof argv.Parser ? // parser... cmd diff --git a/Viewer/ig.js b/Viewer/ig.js index d9763f23..276859bc 100755 --- a/Viewer/ig.js +++ b/Viewer/ig.js @@ -12,14 +12,12 @@ require('v8-compile-cache') // NOTE: this fixes several issues with lib/util conflicting with stuff... require('repl') + // setup module loaders... require = require('./cfg/requirejs')(require).requirejs require.main = {filename: (nodeRequire.main || {}).filename} - -/*********************************************************************/ - var core = require('features/core') // XXX for some reason if this is not loaded here things break in CLI... // ...setting priority does not help... @@ -28,7 +26,7 @@ var meta = require('features/meta') -//--------------------------------------------------------------------- +/*********************************************************************/ // NOTE: this is here to simplify importing... var ImageGridFeatures = diff --git a/Viewer/package-lock.json b/Viewer/package-lock.json index f34a663c..ed17162c 100755 --- a/Viewer/package-lock.json +++ b/Viewer/package-lock.json @@ -1127,9 +1127,9 @@ } }, "ig-argv": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/ig-argv/-/ig-argv-2.16.2.tgz", - "integrity": "sha512-bSOslxGN9XqJ+IVba/XC0h9p1r/z/25wmJ2ik2xCNlMU07WI/K2ensIFR93I0aVfLHxsV37G5CdlP8xmiRIcLg==", + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/ig-argv/-/ig-argv-2.16.3.tgz", + "integrity": "sha512-58WBfqqXNL6KV4CaSVmFAizqYd0ymGANe0F+d/Zue2JHXOpolB6jwY0glrzU09THZjipnNnB+LlUxYwcwDeTwA==", "requires": { "ig-object": "^5.2.6" } @@ -1861,6 +1861,12 @@ "strip-json-comments": "~2.0.1" } }, + "rcedit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.3.0.tgz", + "integrity": "sha512-h1gNEl9Oai1oijwyJ1WYqYSXTStHnOcv1KYljg/8WM4NAg3H1KBK3azIaKkQ1WQl+d7PoJpcBMscPfLXVKgCLQ==", + "dev": true + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", diff --git a/Viewer/package.json b/Viewer/package.json index 0bb6225e..09cf3188 100755 --- a/Viewer/package.json +++ b/Viewer/package.json @@ -31,7 +31,7 @@ "glob": "^7.1.6", "guarantee-events": "^1.0.0", "ig-actions": "^3.24.22", - "ig-argv": "^2.16.2", + "ig-argv": "^2.16.3", "ig-features": "^3.4.2", "ig-object": "^5.4.12", "ig-types": "^5.0.40", @@ -55,7 +55,8 @@ "devDependencies": { "asar": "^3.0.1", "electron-rebuild": "^1.11.0", - "less": "^3.13.0" + "less": "^3.13.0", + "rcedit": "*" }, "bin": { "ig": "ig.js"