UNPKG

@nestjs-mod/docker-compose

Version:

Docker Compose is a tool for defining and running multi-container applications. It is the key to unlocking a streamlined and efficient development and deployment experience. (Generator docker-compose.yml for https://docs.docker.com/compose)

83 lines 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DockerComposeFileService = void 0; const tslib_1 = require("tslib"); const common_1 = require("@nestjs/common"); const fs_1 = require("fs"); const path_1 = require("path"); const yaml_1 = require("yaml"); const docker_compose_configuration_1 = require("./docker-compose.configuration"); let DockerComposeFileService = class DockerComposeFileService { constructor(dockerComposeConfiguration) { this.dockerComposeConfiguration = dockerComposeConfiguration; } getDockerComposeFilePath() { return this.dockerComposeConfiguration.dockerComposeFile; } readFile(dockerComposeFile) { if (dockerComposeFile && (0, fs_1.existsSync)(dockerComposeFile)) { try { return (0, yaml_1.parse)((0, fs_1.readFileSync)(dockerComposeFile).toString()); } catch (err) { return undefined; } } return undefined; } writeFile(dockerComposeFile, data, header) { if (!dockerComposeFile) { return; } try { const fileDir = (0, path_1.dirname)(dockerComposeFile); if (fileDir && !(0, fs_1.existsSync)(fileDir)) { (0, fs_1.mkdirSync)(fileDir, { recursive: true }); } for (const serviceName of Object.keys(data.services || {})) { delete data.services[serviceName].excludeContainerNameFromEnvironmentName; delete data.services[serviceName].keysOfEnvironmentsWithStaticValue; } (0, fs_1.writeFileSync)(dockerComposeFile, [ header, (0, yaml_1.stringify)(data, { defaultStringType: yaml_1.Scalar.QUOTE_DOUBLE, defaultKeyType: yaml_1.Scalar.PLAIN, lineWidth: 0 }) .split(fileDir) .join('.'), ].join('\n')); } catch (err) { // } } read() { const dockerComposeFile = this.getDockerComposeFilePath(); if (!dockerComposeFile) { return undefined; } return this.readFile(dockerComposeFile); } write(data, header) { const dockerComposeFile = this.getDockerComposeFilePath(); if (!dockerComposeFile) { return; } try { const fileDir = (0, path_1.dirname)(dockerComposeFile); if (fileDir) { if (!(0, fs_1.existsSync)(fileDir)) { (0, fs_1.mkdirSync)(fileDir, { recursive: true }); } this.writeFile(dockerComposeFile, data, header); } } catch (err) { return; } } }; exports.DockerComposeFileService = DockerComposeFileService; exports.DockerComposeFileService = DockerComposeFileService = tslib_1.__decorate([ (0, common_1.Injectable)(), tslib_1.__metadata("design:paramtypes", [docker_compose_configuration_1.DockerComposeConfiguration]) ], DockerComposeFileService); //# sourceMappingURL=docker-compose-file.service.js.map