提交 728e657c 编写于 作者: S Sandeep Somavarapu

Make download service optional

上级 84ad7119
......@@ -42,8 +42,6 @@ import { CommandLineDialogService } from 'vs/platform/dialogs/node/dialogService
import { areSameExtensions, getGalleryExtensionIdFromLocal } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
import Severity from 'vs/base/common/severity';
import URI from 'vs/base/common/uri';
import { IDownloadService } from 'vs/platform/download/common/download';
import { DownloadService } from 'vs/platform/download/node/downloadService';
const notFound = (id: string) => localize('notFound', "Extension '{0}' not found.", id);
const notInstalled = (id: string) => localize('notInstalled', "Extension '{0}' is not installed.", id);
......@@ -243,7 +241,6 @@ export function main(argv: ParsedArgs): TPromise<void> {
services.set(IExtensionManagementService, new SyncDescriptor(ExtensionManagementService));
services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryService));
services.set(IDialogService, new SyncDescriptor(CommandLineDialogService));
services.set(IDownloadService, new SyncDescriptor(DownloadService));
const appenders: AppInsightsAppender[] = [];
if (isBuilt && !extensionDevelopmentPath && !envService.args['disable-telemetry'] && product.enableTelemetry) {
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import URI from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
import { IDownloadService } from 'vs/platform/download/common/download';
import { IRequestService } from 'vs/platform/request/node/request';
import { Schemas } from 'vs/base/common/network';
import { copy } from 'vs/base/node/pfs';
import { download, asText } from 'vs/base/node/request';
export class DownloadService implements IDownloadService {
_serviceBrand: any;
constructor(
@IRequestService private requestService: IRequestService
) { }
download(from: URI, to: string): TPromise<void> {
if (from.scheme === Schemas.file) {
return copy(from.fsPath, to);
}
return this.requestService.request({ url: from.path })
.then(context => {
if (context.res.statusCode === 200) {
return download(to, context);
}
return asText(context)
.then(message => TPromise.wrapError(new Error(`Expected 200, got back ${context.res.statusCode} instead.\n\n${message}`)));
});
}
}
\ No newline at end of file
......@@ -45,6 +45,7 @@ import { getPathFromAmdModule } from 'vs/base/common/amd';
import { tmpdir } from 'os';
import { generateUuid } from 'vs/base/common/uuid';
import { IDownloadService } from 'vs/platform/download/common/download';
import { optional } from 'vs/platform/instantiation/common/instantiation';
const SystemExtensionsRoot = path.normalize(path.join(getPathFromAmdModule(require, ''), '..', 'extensions'));
const ERROR_SCANNING_SYS_EXTENSIONS = 'scanningSystem';
......@@ -140,7 +141,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
@IDialogService private dialogService: IDialogService,
@IExtensionGalleryService private galleryService: IExtensionGalleryService,
@ILogService private logService: ILogService,
@IDownloadService private downloadService: IDownloadService,
@optional(IDownloadService) private downloadService: IDownloadService,
@ITelemetryService private telemetryService: ITelemetryService,
) {
super();
......@@ -165,6 +166,9 @@ export class ExtensionManagementService extends Disposable implements IExtension
}
unzip(zipLocation: URI): TPromise<void> {
if (!this.downloadService) {
throw new Error('Download service is not available');
}
const downloadedLocation = path.join(tmpdir(), generateUuid());
return this.downloadService.download(zipLocation, downloadedLocation).then(() => this.install(URI.file(downloadedLocation)));
}
......
......@@ -97,8 +97,6 @@ import { SearchHistoryService } from 'vs/workbench/services/search/node/searchHi
import { MulitExtensionManagementService } from 'vs/platform/extensionManagement/common/multiExtensionManagement';
import { ExtensionManagementServerService } from 'vs/workbench/services/extensions/node/extensionManagementServerService';
import { DownloadServiceChannel } from 'vs/platform/download/node/downloadIpc';
import { IDownloadService } from 'vs/platform/download/common/download';
import { DownloadService } from 'vs/platform/download/node/downloadService';
/**
* Services that we require for the Shell
......@@ -391,7 +389,6 @@ export class WorkbenchShell extends Disposable {
serviceCollection.set(IExtensionEnablementService, extensionEnablementService);
serviceCollection.set(IRequestService, new SyncDescriptor(RequestService));
serviceCollection.set(IDownloadService, new SyncDescriptor(DownloadService));
this.extensionService = instantiationService.createInstance(ExtensionService);
serviceCollection.set(IExtensionService, this.extensionService);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册