UNPKG

compose-as-code

Version:

Provides a module to express docker compose files as code

71 lines (70 loc) 3.36 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.listContainers = exports.compile = void 0; const compilerUtils_1 = require("./compilerUtils"); const serviceCompiler_1 = require("./serviceCompiler"); const networkCompiler_1 = require("./networkCompiler"); const volumeCompiler_1 = require("./volumeCompiler"); const compileCompositionMetaData = (composition) => { const baseIndentation = 0; let result = ''; result += (0, compilerUtils_1.compileKeyValuePair)('name', composition.name.toLowerCase(), baseIndentation); return result; }; const compile = (compilerProps) => __awaiter(void 0, void 0, void 0, function* () { const app = globalThis.cacStore.app; if (!app) { console.error('No app was defined. Without an app there is no composition possible.'); return Promise.reject(); } console.log(`Found ${app.compositions.length} compositions`); const resultingFiles = []; for (const composition of app.compositions) { let resultFileContent = ''; resultFileContent += compileCompositionMetaData(composition); if (composition.services && composition.services.length > 0) { resultFileContent += (0, serviceCompiler_1.compileServices)(composition); } if (composition.networks && composition.networks.length > 0) { resultFileContent += (0, networkCompiler_1.compileNetworks)(composition); } if (composition.volumes && composition.volumes.length > 0) { resultFileContent += (0, volumeCompiler_1.compileVolumes)(composition); } resultingFiles.push({ fileName: composition.id, outputDir: compilerProps.outputDir, content: resultFileContent, }); } resultingFiles.forEach(file => (0, compilerUtils_1.writeFile)(file)); globalThis.cacStore.app = undefined; return Promise.resolve(resultingFiles); }); exports.compile = compile; const listContainers = () => __awaiter(void 0, void 0, void 0, function* () { const app = globalThis.cacStore.app; if (!app) { console.error('No app was defined. Without an app there is no composition possible.'); return Promise.reject(); } console.log(`Found ${app.compositions.length} compositions`); const containerNames = []; for (const composition of app.compositions) { containerNames.push({ composition, containerNames: composition.services.map(service => service.containerName || `${composition.name}-${service.id}-1`), }); } return Promise.resolve(containerNames); }); exports.listContainers = listContainers;