From 3f3a737030e4f145c5d41761811e7fd0c09c1027 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 19 Sep 2017 12:33:11 +0200 Subject: [PATCH] Fix #14412 --- src/vs/code/node/cliProcessMain.ts | 2 +- .../common/extensionManagement.ts | 2 +- .../common/extensionManagementIpc.ts | 6 ++-- .../node/extensionManagementService.ts | 31 +++---------------- .../node/extensionsWorkbenchService.ts | 6 ++-- .../page/electron-browser/welcomePage.ts | 2 +- 6 files changed, 14 insertions(+), 35 deletions(-) diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 2aab9956ea2..3ac32af3401 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -122,7 +122,7 @@ class Main { console.log(localize('foundExtension', "Found '{0}' in the marketplace.", id)); console.log(localize('installing', "Installing...")); - return this.extensionManagementService.installFromGallery(extension, false) + return this.extensionManagementService.installFromGallery(extension) .then(() => console.log(localize('successInstall', "Extension '{0}' v{1} was successfully installed!", id, extension.version))); }); }); diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index a2f81e39d42..24d82c47bb5 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -250,7 +250,7 @@ export interface IExtensionManagementService { onDidUninstallExtension: Event; install(zipPath: string): TPromise; - installFromGallery(extension: IGalleryExtension, promptToInstallDependencies?: boolean): TPromise; + installFromGallery(extension: IGalleryExtension): TPromise; uninstall(extension: ILocalExtension, force?: boolean): TPromise; getInstalled(type?: LocalExtensionType): TPromise; } diff --git a/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts b/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts index ecdb8c08816..d0acbb80340 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts @@ -43,7 +43,7 @@ export class ExtensionManagementChannel implements IExtensionManagementChannel { case 'event:onUninstallExtension': return eventToCall(this.onUninstallExtension); case 'event:onDidUninstallExtension': return eventToCall(this.onDidUninstallExtension); case 'install': return this.service.install(arg); - case 'installFromGallery': return this.service.installFromGallery(arg[0], arg[1]); + case 'installFromGallery': return this.service.installFromGallery(arg[0]); case 'uninstall': return this.service.uninstall(arg[0], arg[1]); case 'getInstalled': return this.service.getInstalled(arg); } @@ -73,8 +73,8 @@ export class ExtensionManagementChannelClient implements IExtensionManagementSer return this.channel.call('install', zipPath); } - installFromGallery(extension: IGalleryExtension, promptToInstallDependencies: boolean = true): TPromise { - return this.channel.call('installFromGallery', [extension, promptToInstallDependencies]); + installFromGallery(extension: IGalleryExtension): TPromise { + return this.channel.call('installFromGallery', [extension]); } uninstall(extension: ILocalExtension, force = false): TPromise { diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 6d4d49f7c80..24f88da7d2a 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -121,7 +121,7 @@ export class ExtensionManagementService implements IExtensionManagementService { }); } - installFromGallery(extension: IGalleryExtension, promptToInstallDependencies: boolean = true): TPromise { + installFromGallery(extension: IGalleryExtension): TPromise { const id = getLocalExtensionIdFromGallery(extension, extension.version); return this.isObsolete(id).then(isObsolete => { @@ -129,7 +129,7 @@ export class ExtensionManagementService implements IExtensionManagementService { return TPromise.wrapError(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", extension.displayName || extension.name))); } this._onInstallExtension.fire({ id, gallery: extension }); - return this.installCompatibleVersion(extension, true, promptToInstallDependencies) + return this.installCompatibleVersion(extension, true) .then( local => this._onDidInstallExtension.fire({ id, local, gallery: extension }), error => { @@ -140,31 +140,10 @@ export class ExtensionManagementService implements IExtensionManagementService { }); } - private installCompatibleVersion(extension: IGalleryExtension, installDependencies: boolean, promptToInstallDependencies: boolean): TPromise { + private installCompatibleVersion(extension: IGalleryExtension, installDependencies: boolean): TPromise { return this.galleryService.loadCompatibleVersion(extension) .then(compatibleVersion => this.getDependenciesToInstall(extension, installDependencies) - .then(dependencies => { - if (!dependencies.length) { - return this.downloadAndInstall(compatibleVersion); - } - if (promptToInstallDependencies) { - const message = nls.localize('installDependeciesConfirmation', "Installing '{0}' also installs its dependencies. Would you like to continue?", extension.displayName); - const options = [ - nls.localize('install', "Yes"), - nls.localize('doNotInstall', "No") - ]; - return this.choiceService.choose(Severity.Info, message, options, 1, true) - .then(value => { - if (value === 0) { - return this.installWithDependencies(compatibleVersion); - } - return TPromise.wrapError(errors.canceled()); - }, error => TPromise.wrapError(errors.canceled())); - } else { - return this.installWithDependencies(compatibleVersion); - } - }) - ); + .then(dependencies => dependencies.length ? this.installWithDependencies(compatibleVersion) : this.downloadAndInstall(compatibleVersion))); } private getDependenciesToInstall(extension: IGalleryExtension, checkDependecies: boolean): TPromise { @@ -202,7 +181,7 @@ export class ExtensionManagementService implements IExtensionManagementService { } return this.downloadAndInstall(extension) .then(localExtension => { - return TPromise.join(dependecies.map((dep) => this.installCompatibleVersion(dep, false, false))) + return TPromise.join(dependecies.map((dep) => this.installCompatibleVersion(dep, false))) .then(installedLocalExtensions => { for (const installedLocalExtension of installedLocalExtensions) { const gallery = this.getGalleryExtensionForLocalExtension(dependecies, installedLocalExtension); diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index 192350635c5..a9118867a83 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -487,7 +487,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { } const toUpdate = this.local.filter(e => e.outdated && (e.state !== ExtensionState.Installing)); - return TPromise.join(toUpdate.map(e => this.install(e, false))); + return TPromise.join(toUpdate.map(e => this.install(e))); } canInstall(extension: IExtension): boolean { @@ -498,7 +498,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { return !!(extension as Extension).gallery; } - install(extension: string | IExtension, promptToInstallDependencies: boolean = true): TPromise { + install(extension: string | IExtension): TPromise { if (typeof extension === 'string') { return this.extensionService.install(extension); } @@ -514,7 +514,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { return TPromise.wrapError(new Error('Missing gallery')); } - return this.extensionService.installFromGallery(gallery, promptToInstallDependencies); + return this.extensionService.installFromGallery(gallery); } setEnablement(extension: IExtension, enable: boolean, workspace: boolean = false): TPromise { diff --git a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts index d98c51565d7..c57f74e828a 100644 --- a/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts +++ b/src/vs/workbench/parts/welcome/page/electron-browser/welcomePage.ts @@ -371,7 +371,7 @@ class WelcomePage { if (!extension) { return false; } - return this.extensionManagementService.installFromGallery(extension, false) + return this.extensionManagementService.installFromGallery(extension) .then(() => { // TODO: Do this as part of the install to avoid multiple events. return this.extensionEnablementService.setEnablement(extensionSuggestion.id, false);