Skip to content

Commit de4c9f1

Browse files
committed
Add message saying the install wasn't done if its already there
1 parent fa6c294 commit de4c9f1

File tree

11 files changed

+7360
-7317
lines changed

11 files changed

+7360
-7317
lines changed

sample/yarn.lock

Lines changed: 813 additions & 813 deletions
Large diffs are not rendered by default.

vscode-dotnet-runtime-extension/src/extension.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ export function activate(context: vscode.ExtensionContext, extensionContext?: IE
114114
const dotnetPath = await callWithErrorHandling<Promise<IDotnetAcquireResult>>(async () => {
115115
eventStream.post(new DotnetRuntimeAcquisitionStarted());
116116
eventStream.post(new DotnetAcquisitionRequested(commandContext.version, commandContext.requestingExtensionId));
117+
acquisitionWorker.setAcquisitionContext(commandContext);
117118

118119
if (!commandContext.version || commandContext.version === 'latest') {
119120
throw new Error(`Cannot acquire .NET version "${commandContext.version}". Please provide a valid version.`);

vscode-dotnet-runtime-extension/yarn.lock

Lines changed: 2239 additions & 2239 deletions
Large diffs are not rendered by default.

vscode-dotnet-runtime-library/src/Acquisition/DotnetCoreAcquisitionWorker.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { IDotnetAcquireResult } from '../IDotnetAcquireResult';
2323
import { IAcquisitionWorkerContext } from './IAcquisitionWorkerContext';
2424
import { IDotnetCoreAcquisitionWorker } from './IDotnetCoreAcquisitionWorker';
2525
import { IDotnetInstallationContext } from './IDotnetInstallationContext';
26+
import { IDotnetAcquireContext } from '..';
2627

2728
export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker {
2829
private readonly installingVersionsKey = 'installing';
@@ -92,7 +93,9 @@ export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker
9293
const existingAcquisitionPromise = this.acquisitionPromises[version];
9394
if (existingAcquisitionPromise) {
9495
// This version of dotnet is already being acquired. Memoize the promise.
95-
this.context.eventStream.post(new DotnetAcquisitionInProgress(version));
96+
this.context.eventStream.post(new DotnetAcquisitionInProgress(version,
97+
(this.context.acquisitionContext && this.context.acquisitionContext.requestingExtensionId)
98+
? this.context.acquisitionContext!.requestingExtensionId : null));
9699
return existingAcquisitionPromise.then((res) => ({ dotnetPath: res }));
97100
} else {
98101
// We're the only one acquiring this version of dotnet, start the acquisition process.
@@ -132,7 +135,9 @@ export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker
132135
if (installedVersions.includes(version) && fs.existsSync(dotnetPath)) {
133136
// Version requested has already been installed.
134137
this.context.installationValidator.validateDotnetInstall(version, dotnetPath);
135-
this.context.eventStream.post(new DotnetAcquisitionAlreadyInstalled(version));
138+
this.context.eventStream.post(new DotnetAcquisitionAlreadyInstalled(version,
139+
(this.context.acquisitionContext && this.context.acquisitionContext.requestingExtensionId)
140+
? this.context.acquisitionContext!.requestingExtensionId : null));
136141
return dotnetPath;
137142
}
138143

@@ -158,6 +163,11 @@ export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker
158163
return dotnetPath;
159164
}
160165

166+
public setAcquisitionContext(context : IDotnetAcquireContext)
167+
{
168+
this.context.acquisitionContext = context;
169+
}
170+
161171
private async uninstallRuntime(version: string) {
162172
delete this.acquisitionPromises[version];
163173

vscode-dotnet-runtime-library/src/Acquisition/IAcquisitionWorkerContext.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* Copyright (c) Microsoft Corporation. All rights reserved.
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
* ------------------------------------------------------------------------------------------ */
5+
import { IDotnetAcquireContext } from '..';
56
import { IEventStream } from '../EventStream/EventStream';
67
import { IExtensionState } from '../IExtensionState';
78
import { IAcquisitionInvoker } from './IAcquisitionInvoker';
@@ -16,4 +17,5 @@ export interface IAcquisitionWorkerContext {
1617
installationValidator: IInstallationValidator;
1718
timeoutValue: number;
1819
installDirectoryProvider: IInstallationDirectoryProvider;
20+
acquisitionContext? : IDotnetAcquireContext | null;
1921
}

vscode-dotnet-runtime-library/src/EventStream/EventStreamEvents.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -269,21 +269,25 @@ export class DotnetAcquisitionPartialInstallation extends DotnetAcquisitionMessa
269269
}
270270
}
271271

272-
export class DotnetAcquisitionInProgress extends DotnetAcquisitionMessage {
272+
export class DotnetAcquisitionInProgress extends IEvent {
273+
public readonly type = EventType.DotnetAcquisitionInProgress;
274+
273275
public readonly eventName = 'DotnetAcquisitionInProgress';
274-
constructor(public readonly version: string) { super(); }
276+
constructor(public readonly version: string, public readonly requestingExtensionId: string | null) { super(); }
275277

276278
public getProperties() {
277-
return {InProgressInstallationVersion : this.version};
279+
return {InProgressInstallationVersion : this.version, extensionId : this.requestingExtensionId != null ? this.requestingExtensionId : ''};
278280
}
279281
}
280282

281-
export class DotnetAcquisitionAlreadyInstalled extends DotnetAcquisitionMessage {
283+
export class DotnetAcquisitionAlreadyInstalled extends IEvent {
282284
public readonly eventName = 'DotnetAcquisitionAlreadyInstalled';
283-
constructor(public readonly version: string) { super(); }
285+
public readonly type = EventType.DotnetAcquisitionAlreadyInstalled;
286+
287+
constructor(public readonly version: string, public readonly requestingExtensionId: string | null) { super(); }
284288

285289
public getProperties() {
286-
return {AlreadyInstalledVersion : this.version};
290+
return {AlreadyInstalledVersion : this.version, extensionId : this.requestingExtensionId != null ? this.requestingExtensionId : ''};
287291
}
288292
}
289293

vscode-dotnet-runtime-library/src/EventStream/EventType.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ export enum EventType {
1212
DotnetAcquisitionSuccessEvent,
1313
DotnetAcquisitionMessage,
1414
DotnetAcquisitionTest,
15+
DotnetAcquisitionAlreadyInstalled,
16+
DotnetAcquisitionInProgress
1517
}

vscode-dotnet-runtime-library/src/EventStream/OutputChannelObserver.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
*--------------------------------------------------------------------------------------------*/
55
import * as vscode from 'vscode';
66
import {
7+
DotnetAcquisitionAlreadyInstalled,
78
DotnetAcquisitionCompleted,
89
DotnetAcquisitionError,
10+
DotnetAcquisitionInProgress,
911
DotnetAcquisitionStarted,
1012
DotnetAcquisitionVersionError,
1113
DotnetExistingPathResolutionCompleted,
@@ -68,6 +70,26 @@ export class OutputChannelObserver implements IEventStreamObserver {
6870
this.outputChannel.append(`Using configured .NET path: ${ (event as DotnetExistingPathResolutionCompleted).resolvedPath }\n`);
6971
}
7072
break;
73+
case EventType.DotnetAcquisitionAlreadyInstalled:
74+
if(event instanceof DotnetAcquisitionAlreadyInstalled)
75+
{
76+
this.outputChannel.append(`${
77+
(event as DotnetAcquisitionAlreadyInstalled).requestingExtensionId
78+
} wants to install .NET ${
79+
(event as DotnetAcquisitionAlreadyInstalled).version
80+
} but it already exists. No downloads or changes were made.\n`);
81+
}
82+
break;
83+
case EventType.DotnetAcquisitionInProgress:
84+
if(event instanceof DotnetAcquisitionInProgress)
85+
{
86+
this.outputChannel.append(`${
87+
(event as DotnetAcquisitionInProgress).requestingExtensionId
88+
} tried to install .NET ${
89+
(event as DotnetAcquisitionInProgress).version
90+
} but that install had already been requested. No downloads or changes were made.\n`);
91+
}
92+
break;
7193
case EventType.DotnetAcquisitionError:
7294
const error = event as DotnetAcquisitionError;
7395
this.outputChannel.appendLine(' Error!');

0 commit comments

Comments
 (0)