dockest
Version:
Dockest is an integration testing tool aimed at alleviating the process of evaluating unit tests whilst running multi-container Docker applications.
46 lines • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getParsedComposeFile = void 0;
const js_yaml_1 = require("js-yaml");
const zod_1 = require("zod");
const errors_1 = require("../../errors");
const format_zod_error_1 = require("../../utils/format-zod-error");
const StringNumber = zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).transform((port) => {
if (typeof port === 'string') {
return parseInt(port, 10);
}
return port;
});
const Port = zod_1.z
.object({
published: StringNumber,
target: StringNumber,
})
.passthrough();
const Environment = zod_1.z.record(zod_1.z.union([zod_1.z.string(), zod_1.z.number()]));
const Service = zod_1.z
.object({
environment: Environment.optional(),
image: zod_1.z.string().optional(),
ports: zod_1.z.array(Port),
})
.passthrough();
const ComposeFile = zod_1.z
.object({
version: zod_1.z.string().optional(),
services: zod_1.z.record(Service),
})
.passthrough();
function getParsedComposeFile(mergedComposeFiles) {
const loadedMergedComposeFiles = (0, js_yaml_1.safeLoad)(mergedComposeFiles);
const parsedMergedComposeFiles = ComposeFile.safeParse(loadedMergedComposeFiles);
if (!parsedMergedComposeFiles.success) {
throw new errors_1.DockestError(`Invalid Composefile
${(0, format_zod_error_1.formatZodError)(parsedMergedComposeFiles.error, 'ComposeFile')}`);
}
return {
dockerComposeFile: parsedMergedComposeFiles.data,
};
}
exports.getParsedComposeFile = getParsedComposeFile;
//# sourceMappingURL=get-parsed-compose-file.js.map