From c5a6ea17192dc8d94604d08dec4750393d442e35 Mon Sep 17 00:00:00 2001 From: MOZGIII Date: Thu, 24 Feb 2022 03:35:20 +0300 Subject: [PATCH] feat(cli): add --inspect-brk-electron option (#1328) * feat(cli): add --inspect-brk-electron option * chore: fix lint Co-authored-by: Samuel Attard Co-authored-by: Keeley Hammond --- packages/api/cli/src/electron-forge-start.ts | 2 ++ packages/api/core/src/api/start.ts | 5 +++++ packages/api/core/test/fast/start_spec.ts | 15 +++++++++++++++ packages/utils/types/src/index.ts | 5 +++++ 4 files changed, 27 insertions(+) diff --git a/packages/api/cli/src/electron-forge-start.ts b/packages/api/cli/src/electron-forge-start.ts index 34ba5b80d9..d0df280b93 100644 --- a/packages/api/cli/src/electron-forge-start.ts +++ b/packages/api/cli/src/electron-forge-start.ts @@ -26,6 +26,7 @@ import workingDir from './util/working-dir'; .option('-n, --run-as-node', 'Run the Electron app as a Node.JS script') .option('--vscode', 'Used to enable arg transformation for debugging Electron through VSCode. Do not use yourself.') .option('-i, --inspect-electron', 'Triggers inspect mode on Electron to allow debugging the main process. Electron >1.7 only') + .option('--inspect-brk-electron', 'Triggers inspect-brk mode on Electron to allow debugging the main process. Electron >1.7 only') .action((cwd) => { dir = workingDir(dir, cwd); }) @@ -45,6 +46,7 @@ import workingDir from './util/working-dir'; enableLogging: !!program.enableLogging, runAsNode: !!program.runAsNode, inspect: !!program.inspectElectron, + inspectBrk: !!program.inspectBrkElectron, }; if (program.vscode && appArgs) { diff --git a/packages/api/core/src/api/start.ts b/packages/api/core/src/api/start.ts index 34d0f982f8..8b5d69fa0f 100644 --- a/packages/api/core/src/api/start.ts +++ b/packages/api/core/src/api/start.ts @@ -24,6 +24,7 @@ export default async ({ args = [], runAsNode = false, inspect = false, + inspectBrk = false, }: StartOptions): Promise => { asyncOra.interactive = interactive; @@ -63,6 +64,7 @@ export default async ({ args, runAsNode, inspect, + inspectBrk, }); let prefixArgs: string[] = []; if (typeof spawnedPluginChild === 'string') { @@ -103,6 +105,9 @@ export default async ({ if (inspect) { args = ['--inspect' as string | number].concat(args); } + if (inspectBrk) { + args = ['--inspect-brk' as string | number].concat(args); + } let spawned!: ElectronProcess; diff --git a/packages/api/core/test/fast/start_spec.ts b/packages/api/core/test/fast/start_spec.ts index 905bc8b9b7..f98b9145ed 100644 --- a/packages/api/core/test/fast/start_spec.ts +++ b/packages/api/core/test/fast/start_spec.ts @@ -174,6 +174,21 @@ describe('start', () => { expect(spawnStub.firstCall.args[1].slice(1)).to.deep.equal(['--inspect'].concat(args)); }); + it('should pass --inspect-brk at the start of the args if inspectBrk is set', async () => { + const args = ['magic']; + resolveStub.returnsArg(0); + spawnStub.returns(0); + await start({ + args, + dir: __dirname, + interactive: false, + inspectBrk: true, + }); + expect(spawnStub.callCount).to.equal(1); + expect(spawnStub.firstCall.args[0]).to.equal('fake_electron_path'); + expect(spawnStub.firstCall.args[1].slice(1)).to.deep.equal(['--inspect-brk'].concat(args)); + }); + it('should resolve with a handle to the spawned instance', async () => { resolveStub.returnsArg(0); const fakeChild = { diff --git a/packages/utils/types/src/index.ts b/packages/utils/types/src/index.ts index 8c71cf4d16..bd09d460a1 100644 --- a/packages/utils/types/src/index.ts +++ b/packages/utils/types/src/index.ts @@ -120,6 +120,11 @@ export interface StartOptions { * Enables the node inspector, you can connect to this from chrome://inspect */ inspect?: boolean; + /** + * Enables the node inspector, you can connect to this from chrome://inspect + * Pauses the execution on first JavaScript line until debugger connects. + */ + inspectBrk?: boolean; } export type StartResult = ElectronProcess | string | string[] | false;