Skip to content

Commit

Permalink
Add message saying the install wasn't done if its already there
Browse files Browse the repository at this point in the history
  • Loading branch information
nagilson committed Aug 11, 2023
1 parent fa6c294 commit de4c9f1
Show file tree
Hide file tree
Showing 11 changed files with 7,360 additions and 7,317 deletions.
1,626 changes: 813 additions & 813 deletions sample/yarn.lock

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions vscode-dotnet-runtime-extension/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ export function activate(context: vscode.ExtensionContext, extensionContext?: IE
const dotnetPath = await callWithErrorHandling<Promise<IDotnetAcquireResult>>(async () => {
eventStream.post(new DotnetRuntimeAcquisitionStarted());
eventStream.post(new DotnetAcquisitionRequested(commandContext.version, commandContext.requestingExtensionId));
acquisitionWorker.setAcquisitionContext(commandContext);

if (!commandContext.version || commandContext.version === 'latest') {
throw new Error(`Cannot acquire .NET version "${commandContext.version}". Please provide a valid version.`);
Expand Down
4,478 changes: 2,239 additions & 2,239 deletions vscode-dotnet-runtime-extension/yarn.lock

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import { IDotnetAcquireResult } from '../IDotnetAcquireResult';
import { IAcquisitionWorkerContext } from './IAcquisitionWorkerContext';
import { IDotnetCoreAcquisitionWorker } from './IDotnetCoreAcquisitionWorker';
import { IDotnetInstallationContext } from './IDotnetInstallationContext';
import { IDotnetAcquireContext } from '..';

export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker {
private readonly installingVersionsKey = 'installing';
Expand Down Expand Up @@ -92,7 +93,9 @@ export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker
const existingAcquisitionPromise = this.acquisitionPromises[version];
if (existingAcquisitionPromise) {
// This version of dotnet is already being acquired. Memoize the promise.
this.context.eventStream.post(new DotnetAcquisitionInProgress(version));
this.context.eventStream.post(new DotnetAcquisitionInProgress(version,
(this.context.acquisitionContext && this.context.acquisitionContext.requestingExtensionId)
? this.context.acquisitionContext!.requestingExtensionId : null));
return existingAcquisitionPromise.then((res) => ({ dotnetPath: res }));
} else {
// We're the only one acquiring this version of dotnet, start the acquisition process.
Expand Down Expand Up @@ -132,7 +135,9 @@ export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker
if (installedVersions.includes(version) && fs.existsSync(dotnetPath)) {
// Version requested has already been installed.
this.context.installationValidator.validateDotnetInstall(version, dotnetPath);
this.context.eventStream.post(new DotnetAcquisitionAlreadyInstalled(version));
this.context.eventStream.post(new DotnetAcquisitionAlreadyInstalled(version,
(this.context.acquisitionContext && this.context.acquisitionContext.requestingExtensionId)
? this.context.acquisitionContext!.requestingExtensionId : null));
return dotnetPath;
}

Expand All @@ -158,6 +163,11 @@ export class DotnetCoreAcquisitionWorker implements IDotnetCoreAcquisitionWorker
return dotnetPath;
}

public setAcquisitionContext(context : IDotnetAcquireContext)
{
this.context.acquisitionContext = context;
}

private async uninstallRuntime(version: string) {
delete this.acquisitionPromises[version];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { IDotnetAcquireContext } from '..';
import { IEventStream } from '../EventStream/EventStream';
import { IExtensionState } from '../IExtensionState';
import { IAcquisitionInvoker } from './IAcquisitionInvoker';
Expand All @@ -16,4 +17,5 @@ export interface IAcquisitionWorkerContext {
installationValidator: IInstallationValidator;
timeoutValue: number;
installDirectoryProvider: IInstallationDirectoryProvider;
acquisitionContext? : IDotnetAcquireContext | null;
}
16 changes: 10 additions & 6 deletions vscode-dotnet-runtime-library/src/EventStream/EventStreamEvents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -269,21 +269,25 @@ export class DotnetAcquisitionPartialInstallation extends DotnetAcquisitionMessa
}
}

export class DotnetAcquisitionInProgress extends DotnetAcquisitionMessage {
export class DotnetAcquisitionInProgress extends IEvent {
public readonly type = EventType.DotnetAcquisitionInProgress;

public readonly eventName = 'DotnetAcquisitionInProgress';
constructor(public readonly version: string) { super(); }
constructor(public readonly version: string, public readonly requestingExtensionId: string | null) { super(); }

public getProperties() {
return {InProgressInstallationVersion : this.version};
return {InProgressInstallationVersion : this.version, extensionId : this.requestingExtensionId != null ? this.requestingExtensionId : ''};
}
}

export class DotnetAcquisitionAlreadyInstalled extends DotnetAcquisitionMessage {
export class DotnetAcquisitionAlreadyInstalled extends IEvent {
public readonly eventName = 'DotnetAcquisitionAlreadyInstalled';
constructor(public readonly version: string) { super(); }
public readonly type = EventType.DotnetAcquisitionAlreadyInstalled;

constructor(public readonly version: string, public readonly requestingExtensionId: string | null) { super(); }

public getProperties() {
return {AlreadyInstalledVersion : this.version};
return {AlreadyInstalledVersion : this.version, extensionId : this.requestingExtensionId != null ? this.requestingExtensionId : ''};
}
}

Expand Down
2 changes: 2 additions & 0 deletions vscode-dotnet-runtime-library/src/EventStream/EventType.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ export enum EventType {
DotnetAcquisitionSuccessEvent,
DotnetAcquisitionMessage,
DotnetAcquisitionTest,
DotnetAcquisitionAlreadyInstalled,
DotnetAcquisitionInProgress
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
import {
DotnetAcquisitionAlreadyInstalled,
DotnetAcquisitionCompleted,
DotnetAcquisitionError,
DotnetAcquisitionInProgress,
DotnetAcquisitionStarted,
DotnetAcquisitionVersionError,
DotnetExistingPathResolutionCompleted,
Expand Down Expand Up @@ -68,6 +70,26 @@ export class OutputChannelObserver implements IEventStreamObserver {
this.outputChannel.append(`Using configured .NET path: ${ (event as DotnetExistingPathResolutionCompleted).resolvedPath }\n`);
}
break;
case EventType.DotnetAcquisitionAlreadyInstalled:
if(event instanceof DotnetAcquisitionAlreadyInstalled)
{
this.outputChannel.append(`${
(event as DotnetAcquisitionAlreadyInstalled).requestingExtensionId
} wants to install .NET ${
(event as DotnetAcquisitionAlreadyInstalled).version
} but it already exists. No downloads or changes were made.\n`);
}
break;
case EventType.DotnetAcquisitionInProgress:
if(event instanceof DotnetAcquisitionInProgress)
{
this.outputChannel.append(`${
(event as DotnetAcquisitionInProgress).requestingExtensionId
} tried to install .NET ${
(event as DotnetAcquisitionInProgress).version
} but that install had already been requested. No downloads or changes were made.\n`);
}
break;
case EventType.DotnetAcquisitionError:
const error = event as DotnetAcquisitionError;
this.outputChannel.appendLine(' Error!');
Expand Down
Loading

0 comments on commit de4c9f1

Please sign in to comment.