UNPKG

@deploystack/docker-to-iac

Version:

Translate docker run and docker compose file to Infrastructure as Code

50 lines (49 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeEnvironment = normalizeEnvironment; const resolveEnvironmentValue_1 = require("./resolveEnvironmentValue"); function stripQuotes(value) { const trimmed = value.trim(); if ((trimmed.startsWith('"') && trimmed.endsWith('"')) || (trimmed.startsWith('\'') && trimmed.endsWith('\''))) { return trimmed.slice(1, -1); } return trimmed; } function splitOnFirstEquals(str) { const firstEqualsIndex = str.indexOf('='); if (firstEqualsIndex === -1) { return [str, '']; } return [ str.slice(0, firstEqualsIndex), str.slice(firstEqualsIndex + 1) ]; } function normalizeEnvironment(env, envVariables) { if (!env) { return {}; } // Handle string format (single env var) if (typeof env === 'string') { const [key, value] = splitOnFirstEquals(env); return { [key.trim()]: stripQuotes((0, resolveEnvironmentValue_1.resolveEnvironmentValue)(value, envVariables)) || '' }; } // Handle array format if (Array.isArray(env)) { return env.reduce((acc, curr) => { const [key, value] = splitOnFirstEquals(curr); acc[key.trim()] = stripQuotes((0, resolveEnvironmentValue_1.resolveEnvironmentValue)(value, envVariables)) || ''; return acc; }, {}); } // Handle object format if (typeof env === 'object') { return Object.entries(env).reduce((acc, [key, value]) => { const stringValue = value?.toString() || ''; acc[key.trim()] = stripQuotes((0, resolveEnvironmentValue_1.resolveEnvironmentValue)(stringValue, envVariables)); return acc; }, {}); } return {}; }