This commit is contained in:
Sandeep Somavarapu
2017-09-19 12:33:11 +02:00
parent 6b26a395e5
commit 3f3a737030
6 changed files with 14 additions and 35 deletions
+1 -1
View File
@@ -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)));
});
});
@@ -250,7 +250,7 @@ export interface IExtensionManagementService {
onDidUninstallExtension: Event<DidUninstallExtensionEvent>;
install(zipPath: string): TPromise<void>;
installFromGallery(extension: IGalleryExtension, promptToInstallDependencies?: boolean): TPromise<void>;
installFromGallery(extension: IGalleryExtension): TPromise<void>;
uninstall(extension: ILocalExtension, force?: boolean): 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[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<void> {
return this.channel.call('installFromGallery', [extension, promptToInstallDependencies]);
installFromGallery(extension: IGalleryExtension): TPromise<void> {
return this.channel.call('installFromGallery', [extension]);
}
uninstall(extension: ILocalExtension, force = false): TPromise<void> {
@@ -121,7 +121,7 @@ export class ExtensionManagementService implements IExtensionManagementService {
});
}
installFromGallery(extension: IGalleryExtension, promptToInstallDependencies: boolean = true): TPromise<void> {
installFromGallery(extension: IGalleryExtension): TPromise<void> {
const id = getLocalExtensionIdFromGallery(extension, extension.version);
return this.isObsolete(id).then(isObsolete => {
@@ -129,7 +129,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.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<ILocalExtension> {
private installCompatibleVersion(extension: IGalleryExtension, installDependencies: boolean): TPromise<ILocalExtension> {
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<ILocalExtension>(errors.canceled());
}, error => TPromise.wrapError<ILocalExtension>(errors.canceled()));
} else {
return this.installWithDependencies(compatibleVersion);
}
})
);
.then(dependencies => dependencies.length ? this.installWithDependencies(compatibleVersion) : this.downloadAndInstall(compatibleVersion)));
}
private getDependenciesToInstall(extension: IGalleryExtension, checkDependecies: boolean): TPromise<string[]> {
@@ -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);
@@ -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<void> {
install(extension: string | IExtension): TPromise<void> {
if (typeof extension === 'string') {
return this.extensionService.install(extension);
}
@@ -514,7 +514,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService {
return TPromise.wrapError<void>(new Error('Missing gallery'));
}
return this.extensionService.installFromGallery(gallery, promptToInstallDependencies);
return this.extensionService.installFromGallery(gallery);
}
setEnablement(extension: IExtension, enable: boolean, workspace: boolean = false): TPromise<void> {
@@ -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);