提交 b1300a09 编写于 作者: S Sandeep Somavarapu

Use extension point kind while checking for ui extension

上级 ceb4b0c4
......@@ -129,7 +129,7 @@ export class Main {
extension = path.isAbsolute(extension) ? extension : path.join(process.cwd(), extension);
const manifest = await getManifest(extension);
if (this.remote && (!isLanguagePackExtension(manifest) && isUIExtension(manifest, this.configurationService))) {
if (this.remote && (!isLanguagePackExtension(manifest) && isUIExtension(manifest, [], this.configurationService))) {
console.log(localize('notSupportedUIExtension', "Can't install extension {0} since UI Extensions are not supported", getBaseLabel(extension)));
return null;
}
......@@ -171,7 +171,7 @@ export class Main {
}
const manifest = await this.extensionGalleryService.getManifest(extension, CancellationToken.None);
if (this.remote && manifest && (!isLanguagePackExtension(manifest) && isUIExtension(manifest, this.configurationService))) {
if (this.remote && manifest && (!isLanguagePackExtension(manifest) && isUIExtension(manifest, [], this.configurationService))) {
console.log(localize('notSupportedUIExtension', "Can't install extension {0} since UI Extensions are not supported", extension.identifier.id));
return null;
}
......
......@@ -345,7 +345,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
if (this.remote) {
const manifest = await this.galleryService.getManifest(extension, CancellationToken.None);
if (manifest && isUIExtension(manifest, this.configurationService) && !isLanguagePackExtension(manifest)) {
if (manifest && isUIExtension(manifest, [], this.configurationService) && !isLanguagePackExtension(manifest)) {
return Promise.reject(new Error(nls.localize('notSupportedUIExtension', "Can't install extension {0} since UI Extensions are not supported", extension.identifier.id)));
}
}
......@@ -516,7 +516,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
return Promise.all(extensionsToInstall.map(async e => {
if (this.remote) {
const manifest = await this.galleryService.getManifest(e, CancellationToken.None);
if (manifest && isUIExtension(manifest, this.configurationService) && !isLanguagePackExtension(manifest)) {
if (manifest && isUIExtension(manifest, [], this.configurationService) && !isLanguagePackExtension(manifest)) {
this.logService.info('Ignored installing the UI dependency', e.identifier.id);
return;
}
......
......@@ -9,7 +9,7 @@ import { getGalleryExtensionId, areSameExtensions } from 'vs/platform/extensionM
import { isNonEmptyArray } from 'vs/base/common/arrays';
import product from 'vs/platform/product/node/product';
export function isUIExtension(manifest: IExtensionManifest, configurationService: IConfigurationService): boolean {
export function isUIExtension(manifest: IExtensionManifest, uiContributions: string[], configurationService: IConfigurationService): boolean {
const extensionId = getGalleryExtensionId(manifest.publisher, manifest.name);
const configuredUIExtensions = configurationService.getValue<string[]>('_workbench.uiExtensions') || [];
if (configuredUIExtensions.length) {
......@@ -30,8 +30,10 @@ export function isUIExtension(manifest: IExtensionManifest, configurationService
if (manifest.main) {
return false;
}
if (manifest.contributes && isNonEmptyArray(manifest.contributes.debuggers)) {
return false;
if (manifest.contributes) {
if (!uiContributions.length || Object.keys(manifest.contributes).some(contribution => uiContributions.indexOf(contribution) === -1)) {
return false;
}
}
// Default is UI Extension
return true;
......
......@@ -35,7 +35,7 @@ import { CancellationToken } from 'vs/base/common/cancellation';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { IFileService } from 'vs/platform/files/common/files';
import { IExtensionManifest, ExtensionType, ExtensionIdentifierWithVersion, IExtension as IPlatformExtension } from 'vs/platform/extensions/common/extensions';
import { isUIExtension } from 'vs/platform/extensions/node/extensionsUtil';
import { isUIExtension } from 'vs/workbench/services/extensions/node/extensionsUtil';
interface IExtensionStateProvider<T> {
(extension: Extension): T;
......
......@@ -19,7 +19,7 @@ import { getManifest } from 'vs/platform/extensionManagement/node/extensionManag
import { ILogService } from 'vs/platform/log/common/log';
import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
import { localize } from 'vs/nls';
import { isUIExtension } from 'vs/platform/extensions/node/extensionsUtil';
import { isUIExtension } from 'vs/workbench/services/extensions/node/extensionsUtil';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
export class MultiExtensionManagementService extends Disposable implements IExtensionManagementService {
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';
import { ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { isUIExtension as _isUIExtension } from 'vs/platform/extensions/node/extensionsUtil';
export function isUIExtension(manifest: IExtensionManifest, configurationService: IConfigurationService): boolean {
const uiExtensionPoints = ExtensionsRegistry.getExtensionPoints().filter(e => e.defaultExtensionKind !== 'workspace').map(e => e.name);
return _isUIExtension(manifest, uiExtensionPoints, configurationService);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册