diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index cf442e6c925..88e78ae2d55 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -223,7 +223,7 @@ export interface IExtensionManagementService { onDidUninstallExtension: Event; install(zipPath: string): TPromise; - installFromGallery(extension: IGalleryExtension): TPromise; + installFromGallery(extension: IGalleryExtension, promptToInstallDependencies?: boolean): TPromise; uninstall(extension: ILocalExtension): TPromise; getInstalled(type?: LocalExtensionType): TPromise; } diff --git a/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts b/src/vs/platform/extensionManagement/common/extensionManagementIpc.ts index f0c69ff375c..967cf5d96d8 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); + case 'installFromGallery': return this.service.installFromGallery(arg[0], arg[1]); case 'uninstall': return this.service.uninstall(arg); case 'getInstalled': return this.service.getInstalled(arg); } @@ -72,8 +72,8 @@ export class ExtensionManagementChannelClient implements IExtensionManagementSer return this.channel.call('install', zipPath); } - installFromGallery(extension: IGalleryExtension): TPromise { - return this.channel.call('installFromGallery', extension); + installFromGallery(extension: IGalleryExtension, promptToInstallDependencies: boolean = true): TPromise { + return this.channel.call('installFromGallery', [extension, promptToInstallDependencies]); } uninstall(extension: ILocalExtension): TPromise { diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index 5f142c9d94a..daac9847e3b 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -138,7 +138,7 @@ export class ExtensionManagementService implements IExtensionManagementService { }); } - installFromGallery(extension: IGalleryExtension): TPromise { + installFromGallery(extension: IGalleryExtension, promptToInstallDependencies: boolean = true): TPromise { const id = getExtensionId(extension, extension.version); return this.isObsolete(id).then(isObsolete => { @@ -146,8 +146,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.getLocalExtension(extension) - .then(local => this.installCompatibleVersion(extension, true, !local)) + return this.installCompatibleVersion(extension, true, promptToInstallDependencies) .then( local => this._onDidInstallExtension.fire({ id, local, gallery: extension }), error => { @@ -185,12 +184,6 @@ export class ExtensionManagementService implements IExtensionManagementService { ); } - private getLocalExtension(extension: IGalleryExtension): TPromise { - const extensionName = `${extension.publisher}.${extension.name}`; - return this.getInstalled().then(installed => installed.filter(local => `${local.manifest.publisher}.${local.manifest.name}` === extensionName)) - .then(local => local.length ? local[0] : null); - } - private getDependenciesToInstall(extension: IGalleryExtension, checkDependecies: boolean): TPromise { if (!checkDependecies) { return TPromise.wrap([]); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensions.ts b/src/vs/workbench/parts/extensions/electron-browser/extensions.ts index 111a105a4c3..120018a0a94 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensions.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensions.ts @@ -59,7 +59,7 @@ export interface IExtensionsWorkbenchService { queryGallery(options?: IQueryOptions): TPromise>; canInstall(extension: IExtension): boolean; install(vsix: string): TPromise; - install(extension: IExtension): TPromise; + install(extension: IExtension, promptToInstallDependencies?: boolean): TPromise; uninstall(extension: IExtension): TPromise; } diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts index 890e09a6f52..27f3384d4be 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts @@ -337,8 +337,8 @@ export class UpdateAllAction extends Action { this.getOutdatedExtensions().done(outDated => this.enabled = outDated.length > 0); } - run(): TPromise { - return this.getOutdatedExtensions().then(outdated => TPromise.join(outdated.map(e => this.extensionsWorkbenchService.install(e)))); + run(promptToInstallDependencies: boolean = true,): TPromise { + return this.getOutdatedExtensions().then(outdated => TPromise.join(outdated.map(e => this.extensionsWorkbenchService.install(e, promptToInstallDependencies)))); } dispose(): void { diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchService.ts index c62205c7994..97feb656962 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchService.ts @@ -406,7 +406,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { return TPromise.as(null); } - return action.run(); + return action.run(false); } canInstall(extension: IExtension): boolean { @@ -417,7 +417,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { return !!(extension as Extension).gallery; } - install(extension: string | IExtension): TPromise { + install(extension: string | IExtension, promptToInstallDependencies: boolean = true): TPromise { if (typeof extension === 'string') { return this.extensionService.install(extension); } @@ -433,7 +433,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { return TPromise.wrapError(new Error('Missing gallery')); } - return this.extensionService.installFromGallery(gallery); + return this.extensionService.installFromGallery(gallery, promptToInstallDependencies); } uninstall(extension: IExtension): TPromise {