UNPKG

@codingame/monaco-vscode-extensions-service-override

Version:

VSCode public API plugged on the monaco editor - extensions service-override

121 lines (118 loc) 6.8 kB
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6'; import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network'; import { isWeb } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform'; import { isString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types'; import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri'; import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls'; import { CommandsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands'; import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service'; import { IExtensionManagementService, IExtensionGalleryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement.service'; import { ExtensionManagementCLI } from '../../../platform/extensionManagement/common/extensionManagementCLI.js'; import { getExtensionId } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagementUtil'; import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation'; import { ServiceCollection } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/serviceCollection'; import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service'; import { AbstractMessageLogger } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log'; import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service'; import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service'; import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service'; import { IExtensionManagementServerService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensionManagement/common/extensionManagement.service'; import { IExtensionManifestPropertiesService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService.service'; CommandsRegistry.registerCommand("_remoteCLI.openExternal", function(accessor, uri) { const openerService = accessor.get(IOpenerService); return openerService.open(isString(uri) ? uri : URI.revive(uri), { openExternal: true, allowTunneling: true }); }); CommandsRegistry.registerCommand("_remoteCLI.windowOpen", function(accessor, toOpen, options) { const commandService = accessor.get(ICommandService); if (!toOpen.length) { return commandService.executeCommand("_files.newWindow", options); } return commandService.executeCommand("_files.windowOpen", toOpen, options); }); CommandsRegistry.registerCommand("_remoteCLI.getSystemStatus", function(accessor) { const commandService = accessor.get(ICommandService); return commandService.executeCommand("_issues.getSystemStatus"); }); CommandsRegistry.registerCommand("_remoteCLI.manageExtensions", async function(accessor, args) { const instantiationService = accessor.get(IInstantiationService); const extensionManagementServerService = accessor.get(IExtensionManagementServerService); const remoteExtensionManagementService = extensionManagementServerService.remoteExtensionManagementServer?.extensionManagementService; if (!remoteExtensionManagementService) { return; } const lines = []; const logger = new (class extends AbstractMessageLogger { log(level, message) { lines.push(message); } })(); const childInstantiationService = instantiationService.createChild(( new ServiceCollection([IExtensionManagementService, remoteExtensionManagementService]))); try { const cliService = childInstantiationService.createInstance(RemoteExtensionManagementCLI, logger); if (args.list) { await cliService.listExtensions(!!args.list.showVersions, args.list.category, undefined); } else { const revive = inputs => ( inputs.map(input => isString(input) ? input : URI.revive(input))); if (Array.isArray(args.install) && args.install.length) { try { await cliService.installExtensions(revive(args.install), [], { isMachineScoped: true }, !!args.force); } catch (e) { lines.push(e.message); } } if (Array.isArray(args.uninstall) && args.uninstall.length) { try { await cliService.uninstallExtensions(revive(args.uninstall), !!args.force, undefined); } catch (e) { lines.push(e.message); } } } return lines.join("\n"); } finally { childInstantiationService.dispose(); } }); let RemoteExtensionManagementCLI = class RemoteExtensionManagementCLI extends ExtensionManagementCLI { constructor( logger, extensionManagementService, extensionGalleryService, labelService, envService, _extensionManifestPropertiesService, productService ) { super( [], logger, extensionManagementService, extensionGalleryService, productService ); this._extensionManifestPropertiesService = _extensionManifestPropertiesService; const remoteAuthority = envService.remoteAuthority; this._location = remoteAuthority ? labelService.getHostLabel(Schemas.vscodeRemote, remoteAuthority) : undefined; } get location() { return this._location; } validateExtensionKind(manifest) { if ( !this._extensionManifestPropertiesService.canExecuteOnWorkspace(manifest) && !(isWeb && this._extensionManifestPropertiesService.canExecuteOnWeb(manifest))) { this.logger.info(( localize( 2587, "Cannot install the '{0}' extension because it is declared to not run in this setup.", getExtensionId(manifest.publisher, manifest.name) ))); return false; } return true; } }; RemoteExtensionManagementCLI = ( __decorate([( __param(1, IExtensionManagementService)), ( __param(2, IExtensionGalleryService)), ( __param(3, ILabelService)), ( __param(4, IWorkbenchEnvironmentService)), ( __param(5, IExtensionManifestPropertiesService)), ( __param(6, IProductService))], RemoteExtensionManagementCLI));