提交 54097e01 编写于 作者: S Sandeep Somavarapu

fix #12917

上级 dcf6d32a
......@@ -223,7 +223,7 @@ export interface IExtensionManagementService {
onDidUninstallExtension: Event<string>;
install(zipPath: string): TPromise<void>;
installFromGallery(extension: IGalleryExtension): TPromise<void>;
installFromGallery(extension: IGalleryExtension, promptToInstallDependencies?: boolean): TPromise<void>;
uninstall(extension: ILocalExtension): TPromise<void>;
getInstalled(type?: LocalExtensionType): TPromise<ILocalExtension[]>;
}
......
......@@ -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<void> {
return this.channel.call('installFromGallery', extension);
installFromGallery(extension: IGalleryExtension, promptToInstallDependencies: boolean = true): TPromise<void> {
return this.channel.call('installFromGallery', [extension, promptToInstallDependencies]);
}
uninstall(extension: ILocalExtension): TPromise<void> {
......
......@@ -138,7 +138,7 @@ export class ExtensionManagementService implements IExtensionManagementService {
});
}
installFromGallery(extension: IGalleryExtension): TPromise<void> {
installFromGallery(extension: IGalleryExtension, promptToInstallDependencies: boolean = true): TPromise<void> {
const id = getExtensionId(extension, extension.version);
return this.isObsolete(id).then(isObsolete => {
......@@ -146,8 +146,7 @@ export class ExtensionManagementService implements IExtensionManagementService {
return TPromise.wrapError<void>(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<ILocalExtension> {
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<string[]> {
if (!checkDependecies) {
return TPromise.wrap([]);
......
......@@ -59,7 +59,7 @@ export interface IExtensionsWorkbenchService {
queryGallery(options?: IQueryOptions): TPromise<IPager<IExtension>>;
canInstall(extension: IExtension): boolean;
install(vsix: string): TPromise<void>;
install(extension: IExtension): TPromise<void>;
install(extension: IExtension, promptToInstallDependencies?: boolean): TPromise<void>;
uninstall(extension: IExtension): TPromise<void>;
}
......
......@@ -337,8 +337,8 @@ export class UpdateAllAction extends Action {
this.getOutdatedExtensions().done(outDated => this.enabled = outDated.length > 0);
}
run(): TPromise<any> {
return this.getOutdatedExtensions().then(outdated => TPromise.join(outdated.map(e => this.extensionsWorkbenchService.install(e))));
run(promptToInstallDependencies: boolean = true,): TPromise<any> {
return this.getOutdatedExtensions().then(outdated => TPromise.join(outdated.map(e => this.extensionsWorkbenchService.install(e, promptToInstallDependencies))));
}
dispose(): void {
......
......@@ -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<void> {
install(extension: string | IExtension, promptToInstallDependencies: boolean = true): TPromise<void> {
if (typeof extension === 'string') {
return this.extensionService.install(extension);
}
......@@ -433,7 +433,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService {
return TPromise.wrapError<void>(new Error('Missing gallery'));
}
return this.extensionService.installFromGallery(gallery);
return this.extensionService.installFromGallery(gallery, promptToInstallDependencies);
}
uninstall(extension: IExtension): TPromise<void> {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册