From 44b92df5b2a6122e923696eb4fb036197fe953c2 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 26 Oct 2016 17:20:24 +0200 Subject: [PATCH] Fix #14413 --- .../node/extensionManagementService.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index bfbc1bc2e17..1454d13f0e3 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -377,11 +377,24 @@ export class ExtensionManagementService implements IExtensionManagementService { const dependenciesToUninstall = this.filterDependents(extension, dependencies, installed); let dependents = this.getDependents(extension, installed).filter(dependent => extension !== dependent && dependenciesToUninstall.indexOf(dependent) === -1); if (dependents.length) { - return TPromise.wrapError(nls.localize('hasDependentsError', "Cannot uninstall extension '{0}'. Some of the installed extensions depends on this.", extension.manifest.displayName || extension.manifest.name)); + return TPromise.wrapError(this.getDependentsErrorMessage(extension, dependents)); } return TPromise.join([this.uninstallExtension(extension.id), ...dependenciesToUninstall.map(d => this.doUninstall(d.id))]).then(() => null); } + private getDependentsErrorMessage(extension: ILocalExtension, dependents: ILocalExtension[]): string { + if (dependents.length === 1) { + return nls.localize('singleDependentError', "Cannot uninstall extension '{0}'. Extension '{1}' depends on this.", + extension.manifest.displayName || extension.manifest.name, dependents[0].manifest.displayName || dependents[0].manifest.name); + } + if (dependents.length === 2) { + return nls.localize('twoDependentsError', "Cannot uninstall extension '{0}'. Extensions '{1}' and '{2}' depend on this.", + extension.manifest.displayName || extension.manifest.name, dependents[0].manifest.displayName || dependents[0].manifest.name, dependents[1].manifest.displayName || dependents[1].manifest.name); + } + return nls.localize('multipleDependentsError', "Cannot uninstall extension '{0}'. Extensions '{1}', '{2}' and others depend on this.", + extension.manifest.displayName || extension.manifest.name, dependents[0].manifest.displayName || dependents[0].manifest.name, dependents[1].manifest.displayName || dependents[1].manifest.name); + } + private getDependenciesToUninstallRecursively(extension: ILocalExtension, installed: ILocalExtension[], checked: ILocalExtension[]): ILocalExtension[] { if (checked.indexOf(extension) !== -1) { return []; -- GitLab