import { existsSync, readFileSync } from "node:fs";
// Minimal .env loader, no dependency. Doesn't override a variable already
// set in the real environment, so `FOO=bar npm start` still wins over
// whatever's sitting in .env.
export function loadEnvFile(path = ".env"): void {
if (!existsSync(path)) {
return;
}
const content = readFileSync(path, "utf8");
for (const line of content.split("\n")) {
const trimmed = line.trim();
if (!trimmed || trimmed.startsWith("#")) {
continue;
}
const eq = trimmed.indexOf("=");
if (eq === -1) {
continue;
}
const key = trimmed.slice(0, eq).trim();
let value = trimmed.slice(eq + 1).trim();
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
value = value.slice(1, -1);
}
if (!(key in process.env)) {
process.env[key] = value;
}
}
}