pentest-distro-builder/filesystem/root/.vscode/extensions/peterjausovec.vscode-docker-0.3.1/out/commands/docker-compose.js

104 lines
4.7 KiB
JavaScript
Raw Normal View History

2018-10-17 14:11:16 -06:00
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE.md in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const vscode = require("vscode");
const vscode_azureextensionui_1 = require("vscode-azureextensionui");
const dockerExtension_1 = require("../dockerExtension");
const extensionVariables_1 = require("../extensionVariables");
const telemetry_1 = require("../telemetry/telemetry");
const teleCmdId = 'vscode-docker.compose.'; // we append up or down when reporting telemetry
async function getDockerComposeFileUris(folder) {
return await vscode.workspace.findFiles(new vscode.RelativePattern(folder, dockerExtension_1.COMPOSE_FILE_GLOB_PATTERN), null, 9999, undefined);
}
function createItem(folder, uri) {
const filePath = folder ? path.join('.', uri.fsPath.substr(folder.uri.fsPath.length)) : uri.fsPath;
return {
description: undefined,
file: filePath,
label: filePath,
path: path.dirname(filePath)
};
}
function computeItems(folder, uris) {
const items = [];
// tslint:disable-next-line:prefer-for-of // Grandfathered in
for (let i = 0; i < uris.length; i++) {
items.push(createItem(folder, uris[i]));
}
return items;
}
async function compose(commands, message, dockerComposeFileUri, selectedComposeFileUris) {
let folder;
if (!vscode.workspace.workspaceFolders) {
vscode.window.showErrorMessage('Docker compose can only run if VS Code is opened on a folder.');
return;
}
if (vscode.workspace.workspaceFolders.length === 1) {
folder = vscode.workspace.workspaceFolders[0];
}
else {
folder = await vscode.window.showWorkspaceFolderPick();
}
if (!folder) {
throw new vscode_azureextensionui_1.UserCancelledError();
}
let commandParameterFileUris;
if (selectedComposeFileUris && selectedComposeFileUris.length) {
commandParameterFileUris = selectedComposeFileUris;
}
else if (dockerComposeFileUri) {
commandParameterFileUris = [dockerComposeFileUri];
}
else {
commandParameterFileUris = [];
}
let selectedItems = commandParameterFileUris.map(uri => createItem(folder, uri));
if (!selectedItems.length) {
// prompt for compose file
const uris = await getDockerComposeFileUris(folder);
if (!uris || uris.length === 0) {
vscode.window.showInformationMessage('Couldn\'t find any docker-compose files in your workspace.');
return;
}
const items = computeItems(folder, uris);
selectedItems = [await extensionVariables_1.ext.ui.showQuickPick(items, { placeHolder: `Choose Docker Compose file ${message}` })];
}
const terminal = extensionVariables_1.ext.terminalProvider.createTerminal('Docker Compose');
const configOptions = vscode.workspace.getConfiguration('docker');
const build = configOptions.get('dockerComposeBuild', true) ? '--build' : '';
const detached = configOptions.get('dockerComposeDetached', true) ? '-d' : '';
terminal.sendText(`cd "${folder.uri.fsPath}"`);
for (let command of commands) {
selectedItems.forEach((item) => {
terminal.sendText(command.toLowerCase() === 'up' ? `docker-compose -f "${item.file}" ${command} ${detached} ${build}` : `docker-compose -f "${item.file}" ${command}`);
});
terminal.show();
if (telemetry_1.reporter) {
/* __GDPR__
"command" : {
"command" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
telemetry_1.reporter.sendTelemetryEvent('command', {
command: teleCmdId + command
});
}
}
}
async function composeUp(dockerComposeFileUri, selectedComposeFileUris) {
return await compose(['up'], 'to bring up', dockerComposeFileUri, selectedComposeFileUris);
}
exports.composeUp = composeUp;
async function composeDown(dockerComposeFileUri, selectedComposeFileUris) {
return await compose(['down'], 'to take down', dockerComposeFileUri, selectedComposeFileUris);
}
exports.composeDown = composeDown;
async function composeRestart(dockerComposeFileUri, selectedComposeFileUris) {
return await compose(['down', 'up'], 'to restart', dockerComposeFileUri, selectedComposeFileUris);
}
exports.composeRestart = composeRestart;
//# sourceMappingURL=docker-compose.js.map