Express-App mit JSON-Speicher unter VCH_DATA_DIR, Monatskalender mit Fotos, Personen mit Rollen und Teilzeit-Freitagen, Abwesenheiten, Feiertage je Bundesland, faire Zufallsauslosung mit Fixieren und Neu-Auslosen. Nextcloud: CalDAV-Discovery, Zielkalender wählbar, Termine je Werktag schreiben und aktualisieren, Abwesenheiten aus Kalender importieren, Personen samt Fotos aus dem Systemadressbuch übernehmen. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
19 lines
848 B
JavaScript
19 lines
848 B
JavaScript
import fs from 'node:fs';
|
||
|
||
/** Lädt eine .env-Datei in process.env, ohne bereits gesetzte Variablen zu überschreiben. */
|
||
export function loadEnvFile(file) {
|
||
if (!fs.existsSync(file)) return false;
|
||
for (const raw of fs.readFileSync(file, 'utf8').split(/\r?\n/)) {
|
||
const line = raw.trim();
|
||
if (!line || line.startsWith('#')) continue;
|
||
const m = line.match(/^(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/);
|
||
if (!m) continue;
|
||
let value = m[2];
|
||
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) value = value.slice(1, -1);
|
||
else if (value.startsWith('#')) value = ''; // "KEY= # optional" – Kommentar ist kein Wert
|
||
else value = value.replace(/\s+#.*$/, '').trim();
|
||
if (process.env[m[1]] === undefined) process.env[m[1]] = value;
|
||
}
|
||
return true;
|
||
}
|