Skip to content

Commit b4409fd

Browse files
Fix how we check extension mode (PowerShell#3992)
Well, this was dumb, and was the reason for red-herring logs in user reports that their extension was in development mode, and why our telemetry had stopped coming through.
1 parent bcd7076 commit b4409fd

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

src/features/ExternalApi.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ NOTE: At some point, we should release a helper npm package that wraps the API a
3535
export class ExternalApiFeature extends LanguageClientConsumer implements IPowerShellExtensionClient {
3636
private static readonly registeredExternalExtension: Map<string, IExternalExtension> = new Map<string, IExternalExtension>();
3737

38-
constructor(private sessionManager: SessionManager, private log: Logger) {
38+
constructor(
39+
private extensionContext: vscode.ExtensionContext,
40+
private sessionManager: SessionManager,
41+
private log: Logger) {
3942
super();
4043
}
4144

@@ -67,8 +70,9 @@ export class ExternalApiFeature extends LanguageClientConsumer implements IPower
6770
throw new Error(`No extension installed with id '${id}'. You must use a valid extension id.`);
6871
}
6972

70-
// If we're in development mode, we allow these to be used for testing purposes.
71-
if (!this.sessionManager.InDevelopmentMode && (id === "ms-vscode.PowerShell" || id === "ms-vscode.PowerShell-Preview")) {
73+
// These are only allowed to be used in our unit tests.
74+
if ((id === "ms-vscode.powershell" || id === "ms-vscode.powershell-preview")
75+
&& !(this.extensionContext.extensionMode === vscode.ExtensionMode.Test)) {
7276
throw new Error("You can't use the PowerShell extension's id in this registration.");
7377
}
7478

src/main.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ export function activate(context: vscode.ExtensionContext): IPowerShellExtension
127127

128128
sessionManager =
129129
new SessionManager(
130+
context,
130131
logger,
131132
documentSelector,
132133
PackageJSON.displayName,
@@ -145,7 +146,7 @@ export function activate(context: vscode.ExtensionContext): IPowerShellExtension
145146
new SpecifyScriptArgsFeature(context),
146147
]
147148

148-
const externalApi = new ExternalApiFeature(sessionManager, logger);
149+
const externalApi = new ExternalApiFeature(context, sessionManager, logger);
149150

150151
// Features and command registrations that require language client
151152
languageClientConsumers = [

src/session.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,8 @@ export class SessionManager implements Middleware {
6262
// Initialized by the start() method, since this requires settings
6363
private powershellExeFinder: PowerShellExeFinder;
6464

65-
public readonly InDevelopmentMode = vscode.ExtensionMode.Development;
66-
6765
constructor(
66+
private extensionContext: vscode.ExtensionContext,
6867
private log: Logger,
6968
private documentSelector: DocumentSelector,
7069
hostName: string,
@@ -167,7 +166,7 @@ export class SessionManager implements Middleware {
167166

168167
this.bundledModulesPath = path.resolve(__dirname, this.sessionSettings.bundledModulesPath);
169168

170-
if (this.InDevelopmentMode) {
169+
if (this.extensionContext.extensionMode === vscode.ExtensionMode.Development) {
171170
const devBundledModulesPath =
172171
path.resolve(
173172
__dirname,
@@ -571,7 +570,7 @@ export class SessionManager implements Middleware {
571570
// This enables handling Semantic Highlighting messages in PowerShell Editor Services
572571
this.languageServerClient.registerProposedFeatures();
573572

574-
if (!this.InDevelopmentMode) {
573+
if (this.extensionContext.extensionMode === vscode.ExtensionMode.Production) {
575574
this.languageServerClient.onTelemetry((event) => {
576575
const eventName: string = event.eventName ? event.eventName : "PSESEvent";
577576
const data: any = event.data ? event.data : event
@@ -588,7 +587,7 @@ export class SessionManager implements Middleware {
588587
this.versionDetails = versionDetails;
589588
this.started = true;
590589

591-
if (!this.InDevelopmentMode) {
590+
if (this.extensionContext.extensionMode === vscode.ExtensionMode.Production) {
592591
this.telemetryReporter.sendTelemetryEvent("powershellVersionCheck",
593592
{ powershellVersion: versionDetails.version });
594593
}

0 commit comments

Comments
 (0)