generator-begcode
Version:
Spring Boot + Angular/React/Vue in one handy generator
36 lines (35 loc) • 1.33 kB
JavaScript
import { DockerfileParser } from 'dockerfile-ast';
import { camelCase, kebabCase } from 'lodash-es';
export function getDockerfileContainers(dockerfileContent) {
const dockerfile = DockerfileParser.parse(dockerfileContent);
const containers = {};
let imageWithTag;
let image;
let tag;
for (const instruction of dockerfile.getInstructions()) {
let alias;
if (instruction.getKeyword() === 'FROM') {
imageWithTag = instruction.getArgumentsContent();
const split = instruction.getArgumentsContent().split(':');
image = split[0];
tag = split[1];
containers[image] = imageWithTag;
if (/^[a-zA-Z0-9-]*$/.test(image)) {
alias = camelCase(image);
}
}
else if (instruction.getKeyword() === 'LABEL') {
const split = instruction.getArgumentsContent().split('=');
if (split[0].toUpperCase() === 'ALIAS') {
alias = camelCase(split[1]);
}
}
if (alias) {
containers[alias] = imageWithTag;
containers[`${alias}Tag`] = tag;
containers[`${alias}Image`] = image;
}
}
return containers;
}
export const dockerPlaceholderGenerator = value => `${kebabCase(value)}-placeholder`;