2026-06-10 18:27:19 +02:00

59 lines
1.1 KiB
TypeScript

import fs from 'fs';
import path from 'path';
const __dirname = import.meta.dirname;
const ENV_FILE = path.resolve(__dirname, '..', '..', '.env');
interface EnvEntry {
key: string;
value: string;
}
function parseEnvLine(line: string): EnvEntry | null {
const trimmed = line.trim();
if (!trimmed || trimmed.startsWith('#')) {
return null;
}
const separatorIndex = trimmed.indexOf('=');
if (separatorIndex === -1) {
return null;
}
const key = trimmed.slice(0, separatorIndex).trim();
let value = trimmed.slice(separatorIndex + 1).trim();
if (!key) {
return null;
}
if (
(value.startsWith('"') && value.endsWith('"')) ||
(value.startsWith("'") && value.endsWith("'"))
) {
value = value.slice(1, -1);
}
return { key, value };
}
function loadEnvFile(): void {
if (!fs.existsSync(ENV_FILE)) {
return;
}
const file = fs.readFileSync(ENV_FILE, 'utf8');
for (const line of file.split(/\r?\n/)) {
const entry = parseEnvLine(line);
if (entry && process.env[entry.key] === undefined) {
process.env[entry.key] = entry.value;
}
}
}
loadEnvFile();