@deploystack/docker-to-iac
Version:
Translate docker run and docker compose file to Infrastructure as Code
50 lines (49 loc) • 1.78 kB
JavaScript
;
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 {};
}