UNPKG

@microsoft/compose-language-service

Version:
73 lines 3.92 kB
"use strict"; /*-------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See LICENSE in the project root for license information. *--------------------------------------------------------------------------------------------*/ Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceStartupCodeLensProvider = void 0; const vscode_languageserver_1 = require("vscode-languageserver"); const ProviderBase_1 = require("./ProviderBase"); const ActionContext_1 = require("../utils/ActionContext"); const yaml_1 = require("yaml"); const yamlRangeToLspRange_1 = require("../utils/yamlRangeToLspRange"); class ServiceStartupCodeLensProvider extends ProviderBase_1.ProviderBase { on(params, token) { const ctx = (0, ActionContext_1.getCurrentContext)(); ctx.telemetry.properties.isActivationEvent = 'true'; // This happens automatically so we'll treat it as isActivationEvent === true const results = []; if (!params.document.yamlDocument.value.has('services')) { return undefined; } // First add the run-all from the main "services" node const documentMap = params.document.yamlDocument.value.contents; if ((0, yaml_1.isMap)(documentMap)) { const servicesNode = documentMap.items.find(item => { return (0, yaml_1.isScalar)(item.key) && item.key.value === 'services'; }); if ((0, yaml_1.isPair)(servicesNode)) { const servicesKey = servicesNode.key; if ((0, yaml_1.isScalar)(servicesKey) && servicesKey.range && (0, yaml_1.isMap)(servicesNode.value)) { const lens = vscode_languageserver_1.CodeLens.create((0, yamlRangeToLspRange_1.yamlRangeToLspRange)(params.document.textDocument, servicesKey.range)); lens.command = { title: '$(run-all) Run All Services', command: 'vscode-containers.compose.up', arguments: [ /* dockerComposeFileUri: */ params.document.uri ], }; results.push(lens); } } } // Check for cancellation if (token.isCancellationRequested) { return undefined; } // Then add the run-single for each service const serviceMap = params.document.yamlDocument.value.getIn(['services']); if ((0, yaml_1.isMap)(serviceMap)) { for (const service of serviceMap.items) { // Within each loop we'll check for cancellation (though this is expected to be very fast) if (token.isCancellationRequested) { return undefined; } if ((0, yaml_1.isScalar)(service.key) && typeof service.key.value === 'string' && service.key.range) { const lens = vscode_languageserver_1.CodeLens.create((0, yamlRangeToLspRange_1.yamlRangeToLspRange)(params.document.textDocument, service.key.range)); lens.command = { title: '$(play) Run Service', command: 'vscode-containers.compose.up.subset', arguments: [ /* dockerComposeFileUri: */ params.document.uri, /* selectedComposeFileUris: */ undefined, /* preselectedServices: */ [service.key.value], ], }; results.push(lens); } } } return results; } } exports.ServiceStartupCodeLensProvider = ServiceStartupCodeLensProvider; //# sourceMappingURL=ServiceStartupCodeLensProvider.js.map