From d70cfb4bacec9d7ae67307a10f151475483ff6a1 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Thu, 10 Nov 2016 16:05:10 +0100 Subject: [PATCH] lint: fix extension management layer breakage #15293 --- .../common/extensionManagement.ts | 8 ++--- .../node/extensionGalleryService.ts | 27 +++++++++++++---- .../node/extensionsWorkbenchService.ts | 29 +++++-------------- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index 414e7c597fe..fabf4aee66e 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -5,12 +5,11 @@ 'use strict'; -import nls = require('vs/nls'); +import { localize } from 'vs/nls'; import { TPromise } from 'vs/base/common/winjs.base'; import Event from 'vs/base/common/event'; import { IPager } from 'vs/base/common/paging'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { IRequestContext } from 'vs/base/node/request'; export const EXTENSION_IDENTIFIER_PATTERN = '^[a-z0-9A-Z][a-z0-9\-A-Z]*\\.[a-z0-9A-Z][a-z0-9\-A-Z]*$'; export const EXTENSION_IDENTIFIER_REGEX = new RegExp(EXTENSION_IDENTIFIER_PATTERN); @@ -202,7 +201,8 @@ export interface IExtensionGalleryService { getRequestHeaders(): TPromise<{ [key: string]: string; }>; query(options?: IQueryOptions): TPromise>; download(extension: IGalleryExtension): TPromise; - getAsset(url: string): TPromise; + getReadme(extension: IGalleryExtension): TPromise; + getManifest(extension: IGalleryExtension): TPromise; loadCompatibleVersion(extension: IGalleryExtension): TPromise; getAllDependencies(extension: IGalleryExtension): TPromise; } @@ -288,5 +288,5 @@ export interface IExtensionTipsService { getWorkspaceRecommendations(): string[]; } -export const ExtensionsLabel = nls.localize('extensions', "Extensions"); +export const ExtensionsLabel = localize('extensions', "Extensions"); export const ExtensionsChannelId = 'extensions'; \ No newline at end of file diff --git a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts index bd6b4c75c19..0a6809cdaad 100644 --- a/src/vs/platform/extensionManagement/node/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/node/extensionGalleryService.ts @@ -17,7 +17,7 @@ import { assign, getOrDefault } from 'vs/base/common/objects'; import { IRequestService } from 'vs/platform/request/common/request'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IPager } from 'vs/base/common/paging'; -import { IRequestOptions, IRequestContext, download, asJson } from 'vs/base/node/request'; +import { IRequestOptions, IRequestContext, download, asJson, asText } from 'vs/base/node/request'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import pkg from 'vs/platform/package'; import product from 'vs/platform/product'; @@ -371,15 +371,30 @@ export class ExtensionGalleryService implements IExtensionGalleryService { const startTime = new Date().getTime(); const log = duration => this.telemetryService.publicLog('galleryService:downloadVSIX', assign(data, { duration })); - return this._getAsset({ url }) + return this.getAsset({ url }) .then(context => download(zipPath, context)) .then(() => log(new Date().getTime() - startTime)) .then(() => zipPath); }); } - getAsset(url: string): TPromise { - return this._getAsset({ url }); + getReadme(extension: IGalleryExtension): TPromise { + const url = extension.assets.readme; + + if (!url) { + return TPromise.wrapError('not available'); + } + + return this.getAsset({ url }) + .then(asText); + } + + getManifest(extension: IGalleryExtension): TPromise { + const url = extension.assets.manifest; + + return this.getAsset({ url }) + .then(asText) + .then(JSON.parse); } getAllDependencies(extension: IGalleryExtension): TPromise { @@ -469,7 +484,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService { * Always try with the `redirect=true` query string. * If that does not return 200, try without it. */ - private _getAsset(options: IRequestOptions): TPromise { + private getAsset(options: IRequestOptions): TPromise { const parsedUrl = url.parse(options.url, true); parsedUrl.search = undefined; parsedUrl.query['redirect'] = 'true'; @@ -525,7 +540,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService { const url = getAssetSource(version.files, AssetType.Manifest); const headers = { 'Accept-Encoding': 'gzip' }; - return this._getAsset({ url, headers }) + return this.getAsset({ url, headers }) .then(context => asJson(context)) .then(manifest => { const engine = manifest.engines.vscode; diff --git a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts index e47c20280a5..a884dfa5045 100644 --- a/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts +++ b/src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts @@ -6,7 +6,6 @@ 'use strict'; import { readFile } from 'vs/base/node/pfs'; -import { asText } from 'vs/base/node/request'; import * as semver from 'semver'; import * as path from 'path'; import Event, { Emitter, chain } from 'vs/base/common/event'; @@ -100,14 +99,6 @@ class Extension implements IExtension { return this.local ? this.local.manifest.description : this.gallery.description; } - private get readmeUrl(): string { - if (this.local && this.local.readmeUrl) { - return this.local.readmeUrl; - } - - return this.gallery && this.gallery.assets.readme; - } - private get changelogUrl(): string { if (this.local && this.local.changelogUrl) { return this.local.changelogUrl; @@ -180,25 +171,20 @@ class Extension implements IExtension { return TPromise.as(this.local.manifest); } - return this.galleryService.getAsset(this.gallery.assets.manifest) - .then(asText) - .then(raw => JSON.parse(raw) as IExtensionManifest); + return this.galleryService.getManifest(this.gallery); } getReadme(): TPromise { - const readmeUrl = this.readmeUrl; - - if (!readmeUrl) { - return TPromise.wrapError('not available'); + if (this.local && this.local.readmeUrl) { + const uri = URI.parse(this.local.readmeUrl); + return readFile(uri.fsPath, 'utf8'); } - const uri = URI.parse(readmeUrl); - - if (uri.scheme === 'file') { - return readFile(uri.fsPath, 'utf8'); + if (this.gallery) { + return this.galleryService.getReadme(this.gallery); } - return this.galleryService.getAsset(readmeUrl).then(asText); + return TPromise.wrapError('not available'); } getChangelog(): TPromise { @@ -214,6 +200,7 @@ class Extension implements IExtension { return readFile(uri.fsPath, 'utf8'); } + // TODO@Joao return TPromise.wrapError('not available'); } -- GitLab