poku
Version:
🐷 Poku makes testing easy for Node.js, Bun, Deno, and you at the same time.
62 lines (61 loc) • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveEnvVariables = exports.parseEnvLine = exports.removeComments = void 0;
const removeComments = (input) => {
let output = '';
let quoteChar = '';
let inQuote = false;
for (let i = 0; i < input.length; i++) {
const char = input[i];
if (inQuote) {
output += char;
if (char === quoteChar && input[i - 1] !== '\\')
inQuote = false;
}
else if (char === '"' || char === "'") {
inQuote = true;
quoteChar = char;
output += char;
}
else if (char === '#')
break;
else
output += char;
}
return output.trim();
};
exports.removeComments = removeComments;
const parseEnvLine = (line) => {
const index = line.indexOf('=');
if (index === -1)
return null;
const arg = line.substring(0, index).trim();
const value = line
.substring(index + 1)
.trim()
.replace(/^['"]|['"]$/g, '');
return { arg, value };
};
exports.parseEnvLine = parseEnvLine;
const resolveEnvVariables = (str, env) => {
let result = '';
let i = 0;
while (i < str.length) {
if (str[i] === '$' && str[i + 1] === '{') {
i += 2;
let varName = '';
while (i < str.length && str[i] !== '}') {
varName += str[i];
i++;
}
i++;
result += env[varName] ?? '';
}
else {
result += str[i];
i++;
}
}
return result;
};
exports.resolveEnvVariables = resolveEnvVariables;