Skip to content

Commit c3a9e10

Browse files
committed
move extensionValidator to common
1 parent 1bd3486 commit c3a9e10

7 files changed

Lines changed: 19 additions & 14 deletions

File tree

src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ import { FileService } from 'vs/platform/files/common/fileService';
5555
import { IFileService } from 'vs/platform/files/common/files';
5656
import { DiskFileSystemProvider } from 'vs/platform/files/electron-browser/diskFileSystemProvider';
5757
import { Schemas } from 'vs/base/common/network';
58+
import { IProductService } from 'vs/platform/product/common/product';
59+
import { ProductService } from 'vs/platform/product/node/productService';
5860

5961
export interface ISharedProcessConfiguration {
6062
readonly machineId: string;
@@ -114,6 +116,7 @@ async function main(server: Server, initData: ISharedProcessInitData, configurat
114116
services.set(IConfigurationService, configurationService);
115117
services.set(IRequestService, new SyncDescriptor(RequestService));
116118
services.set(IDownloadService, new SyncDescriptor(DownloadService));
119+
services.set(IProductService, new SyncDescriptor(ProductService));
117120

118121
const mainProcessService = new MainProcessService(server, mainRouter);
119122
services.set(IMainProcessService, mainProcessService);

src/vs/code/node/cliProcessMain.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ import { FileService } from 'vs/platform/files/common/fileService';
4646
import { IFileService } from 'vs/platform/files/common/files';
4747
import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemProvider';
4848
import { DisposableStore } from 'vs/base/common/lifecycle';
49+
import { IProductService } from 'vs/platform/product/common/product';
50+
import { ProductService } from 'vs/platform/product/node/productService';
4951

5052
const notFound = (id: string) => localize('notFound', "Extension '{0}' not found.", id);
5153
const notInstalled = (id: string) => localize('notInstalled', "Extension '{0}' is not installed.", id);
@@ -301,6 +303,7 @@ export async function main(argv: ParsedArgs): Promise<void> {
301303
services.set(ILogService, logService);
302304
services.set(IConfigurationService, configurationService);
303305
services.set(IStateService, new SyncDescriptor(StateService));
306+
services.set(IProductService, new SyncDescriptor(ProductService));
304307

305308
// Files
306309
const fileService = new FileService(logService);

src/vs/platform/extensionManagement/node/extensionGalleryService.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { assign, getOrDefault } from 'vs/base/common/objects';
1111
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1212
import { IPager } from 'vs/base/common/paging';
1313
import { IRequestService, IRequestOptions, IRequestContext, asJson, asText } from 'vs/platform/request/common/request';
14-
import { isEngineValid } from 'vs/platform/extensions/node/extensionValidator';
14+
import { isEngineValid } from 'vs/platform/extensions/common/extensionValidator';
1515
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
1616
import { generateUuid, isUUID } from 'vs/base/common/uuid';
1717
import { values } from 'vs/base/common/map';
@@ -338,7 +338,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
338338
@IEnvironmentService private readonly environmentService: IEnvironmentService,
339339
@ITelemetryService private readonly telemetryService: ITelemetryService,
340340
@IFileService private readonly fileService: IFileService,
341-
@IProductService productService: IProductService,
341+
@IProductService private readonly productService: IProductService,
342342
) {
343343
const config = productService.extensionsGallery;
344344
this.extensionsGalleryUrl = config && config.serviceUrl;
@@ -356,7 +356,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
356356

357357
getCompatibleExtension(arg1: IExtensionIdentifier | IGalleryExtension, version?: string): Promise<IGalleryExtension | null> {
358358
const extension: IGalleryExtension | null = isIExtensionIdentifier(arg1) ? null : arg1;
359-
if (extension && extension.properties.engine && isEngineValid(extension.properties.engine)) {
359+
if (extension && extension.properties.engine && isEngineValid(extension.properties.engine, this.productService.version)) {
360360
return Promise.resolve(extension);
361361
}
362362
const { id, uuid } = extension ? extension.identifier : <IExtensionIdentifier>arg1;
@@ -382,7 +382,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
382382
const versionAsset = rawExtension.versions.filter(v => v.version === version)[0];
383383
if (versionAsset) {
384384
const extension = toExtension(rawExtension, versionAsset, 0, query);
385-
if (extension.properties.engine && isEngineValid(extension.properties.engine)) {
385+
if (extension.properties.engine && isEngineValid(extension.properties.engine, this.productService.version)) {
386386
return extension;
387387
}
388388
}
@@ -615,7 +615,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
615615
return this.queryGallery(query, CancellationToken.None).then(({ galleryExtensions }) => {
616616
if (galleryExtensions.length) {
617617
if (compatible) {
618-
return Promise.all(galleryExtensions[0].versions.map(v => this.getEngine(v).then(engine => isEngineValid(engine) ? v : null)))
618+
return Promise.all(galleryExtensions[0].versions.map(v => this.getEngine(v).then(engine => isEngineValid(engine, this.productService.version) ? v : null)))
619619
.then(versions => versions
620620
.filter(v => !!v)
621621
.map(v => ({ version: v!.version, date: v!.lastUpdated })));
@@ -701,7 +701,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
701701
if (!engine) {
702702
return null;
703703
}
704-
if (isEngineValid(engine)) {
704+
if (isEngineValid(engine, this.productService.version)) {
705705
return Promise.resolve(version);
706706
}
707707
}
@@ -733,7 +733,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
733733
const version = versions[0];
734734
return this.getEngine(version)
735735
.then(engine => {
736-
if (!isEngineValid(engine)) {
736+
if (!isEngineValid(engine, this.productService.version)) {
737737
return this.getLastValidExtensionVersionRecursively(extension, versions.slice(1));
738738
}
739739

src/vs/platform/extensionManagement/node/extensionManagementService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import { ExtensionsManifestCache } from 'vs/platform/extensionManagement/node/ex
3535
import { ExtensionsLifecycle } from 'vs/platform/extensionManagement/node/extensionLifecycle';
3636
import { toErrorMessage } from 'vs/base/common/errorMessage';
3737
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
38-
import { isEngineValid } from 'vs/platform/extensions/node/extensionValidator';
38+
import { isEngineValid } from 'vs/platform/extensions/common/extensionValidator';
3939
import { tmpdir } from 'os';
4040
import { generateUuid } from 'vs/base/common/uuid';
4141
import { IDownloadService } from 'vs/platform/download/common/download';
@@ -197,7 +197,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
197197
.then(manifest => {
198198
const identifier = { id: getGalleryExtensionId(manifest.publisher, manifest.name) };
199199
let operation: InstallOperation = InstallOperation.Install;
200-
if (manifest.engines && manifest.engines.vscode && !isEngineValid(manifest.engines.vscode)) {
200+
if (manifest.engines && manifest.engines.vscode && !isEngineValid(manifest.engines.vscode, pkg.version)) {
201201
return Promise.reject(new Error(nls.localize('incompatible', "Unable to install extension '{0}' as it is not compatible with VS Code '{1}'.", identifier.id, pkg.version)));
202202
}
203203
const identifierWithVersion = new ExtensionIdentifierWithVersion(identifier, manifest.version);

src/vs/platform/extensions/node/extensionValidator.ts renamed to src/vs/platform/extensions/common/extensionValidator.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as nls from 'vs/nls';
7-
import pkg from 'vs/platform/product/node/package';
87

98
export interface IParsedVersion {
109
hasCaret: boolean;
@@ -222,9 +221,9 @@ export function isValidExtensionVersion(version: string, extensionDesc: IReduced
222221
return isVersionValid(version, extensionDesc.engines.vscode, notices);
223222
}
224223

225-
export function isEngineValid(engine: string): boolean {
224+
export function isEngineValid(engine: string, version: string): boolean {
226225
// TODO@joao: discuss with alex '*' doesn't seem to be a valid engine version
227-
return engine === '*' || isVersionValid(pkg.version, engine);
226+
return engine === '*' || isVersionValid(version, engine);
228227
}
229228

230229
export function isVersionValid(currentVersion: string, requestedVersion: string, notices: string[] = []): boolean {

src/vs/platform/extensions/test/node/extensionValidator.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55
import * as assert from 'assert';
6-
import { INormalizedVersion, IParsedVersion, IReducedExtensionDescription, isValidExtensionVersion, isValidVersion, isValidVersionStr, normalizeVersion, parseVersion } from 'vs/platform/extensions/node/extensionValidator';
6+
import { INormalizedVersion, IParsedVersion, IReducedExtensionDescription, isValidExtensionVersion, isValidVersion, isValidVersionStr, normalizeVersion, parseVersion } from 'vs/platform/extensions/common/extensionValidator';
77

88
suite('Extension Version Validator', () => {
99

src/vs/workbench/services/extensions/node/extensionPoints.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import * as types from 'vs/base/common/types';
1313
import { URI } from 'vs/base/common/uri';
1414
import * as pfs from 'vs/base/node/pfs';
1515
import { getGalleryExtensionId, groupByExtension, ExtensionIdentifierWithVersion } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
16-
import { isValidExtensionVersion } from 'vs/platform/extensions/node/extensionValidator';
16+
import { isValidExtensionVersion } from 'vs/platform/extensions/common/extensionValidator';
1717
import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions';
1818
import { Translations, ILog } from 'vs/workbench/services/extensions/common/extensionPoints';
1919

0 commit comments

Comments
 (0)