From 9fdcf9e0ad1c627f3ead97415c028e610112b829 Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Thu, 22 Nov 2018 19:53:36 -0800 Subject: [PATCH 1/3] Restart Session in every dialog --- src/session.ts | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/session.ts b/src/session.ts index 2692d8a8b7..c6d486df05 100644 --- a/src/session.ts +++ b/src/session.ts @@ -747,6 +747,15 @@ export class SessionManager implements Middleware { `(${this.versionDetails.architecture}) ${this.versionDetails.edition} Edition ` + `[${this.versionDetails.version}]`; + const powerShellItems = + availablePowerShellExes + .filter((item) => item.exePath.toLowerCase() !== currentExePath) + .map((item) => { + return new SessionMenuItem( + `Switch to ${item.versionName}`, + () => { this.changePowerShellExePath(item.exePath); }); + }); + menuItems = [ new SessionMenuItem( `Current session: ${powerShellSessionName}`, @@ -755,26 +764,22 @@ export class SessionManager implements Middleware { new SessionMenuItem( "Restart Current Session", () => { this.restartSession(); }), + + ...powerShellItems, ]; + } else if (this.sessionStatus === SessionStatus.Failed) { menuItems = [ new SessionMenuItem( `Session initialization failed, click here to show PowerShell extension logs`, () => { vscode.commands.executeCommand("PowerShell.ShowLogs"); }), + + new SessionMenuItem( + "Restart Current Session", + () => { this.restartSession(); }), ]; } - const powerShellItems = - availablePowerShellExes - .filter((item) => item.exePath.toLowerCase() !== currentExePath) - .map((item) => { - return new SessionMenuItem( - `Switch to ${item.versionName}`, - () => { this.changePowerShellExePath(item.exePath); }); - }); - - menuItems = menuItems.concat(powerShellItems); - menuItems.push( new SessionMenuItem( "Open Session Logs Folder", From 3e0f4076e428c5fc9fe85c244323f9b7221c810c Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Sun, 25 Nov 2018 21:38:35 -1000 Subject: [PATCH 2/3] always show "Switch to X" & refactor --- src/session.ts | 57 ++++++++++++++++++++++---------------------------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/src/session.ts b/src/session.ts index c6d486df05..e97c20d89c 100644 --- a/src/session.ts +++ b/src/session.ts @@ -729,12 +729,11 @@ export class SessionManager implements Middleware { } private showSessionMenu() { - let menuItems: SessionMenuItem[] = []; - const currentExePath = (this.powerShellExePath || "").toLowerCase(); const availablePowerShellExes = getAvailablePowerShellExes(this.platformDetails, this.sessionSettings); + let sessionText: string; if (this.sessionStatus === SessionStatus.Running) { const currentPowerShellExe = availablePowerShellExes @@ -747,43 +746,37 @@ export class SessionManager implements Middleware { `(${this.versionDetails.architecture}) ${this.versionDetails.edition} Edition ` + `[${this.versionDetails.version}]`; - const powerShellItems = - availablePowerShellExes - .filter((item) => item.exePath.toLowerCase() !== currentExePath) - .map((item) => { - return new SessionMenuItem( - `Switch to ${item.versionName}`, - () => { this.changePowerShellExePath(item.exePath); }); - }); + sessionText = `Current session: ${powerShellSessionName}`; - menuItems = [ - new SessionMenuItem( - `Current session: ${powerShellSessionName}`, - () => { vscode.commands.executeCommand("PowerShell.ShowLogs"); }), + } else if (this.sessionStatus === SessionStatus.Failed) { + sessionText = "Session initialization failed, click here to show PowerShell extension logs"; + } - new SessionMenuItem( - "Restart Current Session", - () => { this.restartSession(); }), + const powerShellItems = + availablePowerShellExes + .filter((item) => item.exePath.toLowerCase() !== currentExePath) + .map((item) => { + return new SessionMenuItem( + `Switch to ${item.versionName}`, + () => { this.changePowerShellExePath(item.exePath); }); + }); - ...powerShellItems, - ]; + const menuItems: SessionMenuItem[] = [ + new SessionMenuItem( + sessionText, + () => { vscode.commands.executeCommand("PowerShell.ShowLogs"); }), - } else if (this.sessionStatus === SessionStatus.Failed) { - menuItems = [ - new SessionMenuItem( - `Session initialization failed, click here to show PowerShell extension logs`, - () => { vscode.commands.executeCommand("PowerShell.ShowLogs"); }), - - new SessionMenuItem( - "Restart Current Session", - () => { this.restartSession(); }), - ]; - } + new SessionMenuItem( + "Restart Current Session", + () => { this.restartSession(); }), + + // Add all of the different PowerShell options + ...powerShellItems, - menuItems.push( new SessionMenuItem( "Open Session Logs Folder", - () => { vscode.commands.executeCommand("PowerShell.OpenLogFolder"); })); + () => { vscode.commands.executeCommand("PowerShell.OpenLogFolder"); }), + ]; vscode .window From 154bcde0b252ada205204b813da6d033bb594caa Mon Sep 17 00:00:00 2001 From: Tyler Leonhardt Date: Wed, 28 Nov 2018 01:05:12 -1000 Subject: [PATCH 3/3] switched to a switch --- src/session.ts | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/session.ts b/src/session.ts index e97c20d89c..daf47bdb20 100644 --- a/src/session.ts +++ b/src/session.ts @@ -734,22 +734,33 @@ export class SessionManager implements Middleware { getAvailablePowerShellExes(this.platformDetails, this.sessionSettings); let sessionText: string; - if (this.sessionStatus === SessionStatus.Running) { - const currentPowerShellExe = + + switch (this.sessionStatus) { + case SessionStatus.Running: + case SessionStatus.Initializing: + case SessionStatus.NotStarted: + case SessionStatus.NeverStarted: + case SessionStatus.Stopping: + const currentPowerShellExe = availablePowerShellExes .find((item) => item.exePath.toLowerCase() === currentExePath); - const powerShellSessionName = - currentPowerShellExe ? - currentPowerShellExe.versionName : - `PowerShell ${this.versionDetails.displayVersion} ` + - `(${this.versionDetails.architecture}) ${this.versionDetails.edition} Edition ` + - `[${this.versionDetails.version}]`; + const powerShellSessionName = + currentPowerShellExe ? + currentPowerShellExe.versionName : + `PowerShell ${this.versionDetails.displayVersion} ` + + `(${this.versionDetails.architecture}) ${this.versionDetails.edition} Edition ` + + `[${this.versionDetails.version}]`; + + sessionText = `Current session: ${powerShellSessionName}`; + break; - sessionText = `Current session: ${powerShellSessionName}`; + case SessionStatus.Failed: + sessionText = "Session initialization failed, click here to show PowerShell extension logs"; + break; - } else if (this.sessionStatus === SessionStatus.Failed) { - sessionText = "Session initialization failed, click here to show PowerShell extension logs"; + default: + throw new TypeError("Not a valid value for the enum 'SessionStatus'"); } const powerShellItems =