@deploystack/docker-to-iac
Version:
Translate docker run and docker compose file to Infrastructure as Code
33 lines (32 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getImageUrl = void 0;
const base_parser_1 = require("../parsers/base-parser");
const parseDockerImage_1 = require("./parseDockerImage");
/**
* Gets the full URL for a Docker image
*
* @param imageString The image string to parse
* @param includeTag Whether to include the tag in the output. Defaults to true.
* @returns Formatted image URL
*/
const getImageUrl = (imageString, includeTag = true) => {
const imageInfo = (0, parseDockerImage_1.parseDockerImage)(imageString);
switch (imageInfo.registry_type) {
case base_parser_1.RegistryType.GHCR:
return `ghcr.io/${imageInfo.repository}${includeTag && imageInfo.tag ? `:${imageInfo.tag}` : ''}`;
case base_parser_1.RegistryType.DOCKER_HUB:
// For Docker Hub, we need to handle official images differently
if (!imageInfo.repository.includes('/')) {
return `docker.io/library/${imageInfo.repository}${includeTag && imageInfo.tag ? `:${imageInfo.tag}` : ''}`;
}
return `docker.io/${imageInfo.repository}${includeTag && imageInfo.tag ? `:${imageInfo.tag}` : ''}`;
default:
// For custom registries, use the full image string as is
if (!includeTag && imageString.includes(':')) {
return imageString.split(':')[0];
}
return imageString;
}
};
exports.getImageUrl = getImageUrl;