mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-05-15 12:01:16 +00:00
27 lines
1009 B
TypeScript
27 lines
1009 B
TypeScript
/**
|
|
* Load a .env-style file (KEY=value per line) into a plain object.
|
|
* Equivalent to `source $TEST_ENV_FILE; set -a` in bash.
|
|
* Maybe we should use some library... now it is just the minimal implementation that covers our use cases.
|
|
*
|
|
* Supported value formats:
|
|
* KEY=value
|
|
* KEY='single quoted'
|
|
* KEY="double quoted"
|
|
* # comment lines are ignored
|
|
*/
|
|
export async function loadEnvFile(filePath: string): Promise<Record<string, string>> {
|
|
const text = await Deno.readTextFile(filePath);
|
|
const result: Record<string, string> = {};
|
|
for (const line of text.split("\n")) {
|
|
const trimmed = line.trim();
|
|
if (!trimmed || trimmed.startsWith("#")) continue;
|
|
const idx = trimmed.indexOf("=");
|
|
if (idx < 0) continue;
|
|
const key = trimmed.slice(0, idx).trim();
|
|
const raw = trimmed.slice(idx + 1).trim();
|
|
// Strip surrounding single or double quotes
|
|
result[key] = raw.replace(/^(['"])(.*)\1$/, "$2");
|
|
}
|
|
return result;
|
|
}
|