mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-26 13:19:42 +00:00
Use extension point kind while checking for ui extension
This commit is contained in:
@@ -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 {
|
||||
|
||||
14
src/vs/workbench/services/extensions/node/extensionsUtil.ts
Normal file
14
src/vs/workbench/services/extensions/node/extensionsUtil.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* 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);
|
||||
}
|
||||
Reference in New Issue
Block a user