Skip to content
Snippets Groups Projects
Commit 12503ed3 authored by Malte Finsterwalder's avatar Malte Finsterwalder
Browse files

HOLI-3881 simplify required env parsing

parent 274c9470
No related branches found
No related tags found
No related merge requests found
...@@ -13,30 +13,30 @@ logger.setUpLogger( ...@@ -13,30 +13,30 @@ logger.setUpLogger(
environment === "development" ? LogSeverity.DEFAULT : LogSeverity.INFO, environment === "development" ? LogSeverity.DEFAULT : LogSeverity.INFO,
); );
const required = <T>(name: string, t?: T, fallback?: T): T => { const requiredEnv = <T>(
if (t === undefined && fallback === undefined) { name: string,
typeFn: (s: string) => T,
fallback?: T,
): T => {
const env = Deno.env.get(name);
if (env === undefined && fallback === undefined) {
throw Error(`Environment variable "${name}" is required`); throw Error(`Environment variable "${name}" is required`);
} else { } else {
return t !== undefined ? t : fallback!; return env !== undefined ? typeFn(env) : fallback!;
} }
}; };
const serverConfigFromEnv = () => { const serverConfigFromEnv = () => {
const asNumber = (str?: string) => (str ? Number(str) : undefined); const asBoolean = (str: string) => /^true$/i.test(str);
const asBoolean = (str?: string) => (str ? /^true$/i.test(str) : undefined);
return { return {
port: required("PORT", asNumber(Deno.env.get("PORT")), DEFAULT_PORT), port: requiredEnv("PORT", Number, DEFAULT_PORT),
cacheEnabled: required( cacheEnabled: requiredEnv("CACHE_ENABLED", asBoolean, DEFAULT_CACHE_ENABLED),
"CACHE_ENABLED", cacheTtlMsBetterplace: requiredEnv(
asBoolean(Deno.env.get("CACHE_ENABLED")),
DEFAULT_CACHE_ENABLED,
),
cacheTtlMsBetterplace: required(
"CACHE_TTL_MS_BETTERPLACE", "CACHE_TTL_MS_BETTERPLACE",
asNumber(Deno.env.get("CACHE_TTL_MS_BETTERPLACE")), Number,
DEFAULT_CACHE_TTL_MS_BETTERPLACE, DEFAULT_CACHE_TTL_MS_BETTERPLACE,
), ),
fake: asBoolean(Deno.env.get("FAKE")) || false, // For local development. If set, the API returns dummy data fake: requiredEnv("FAKE", asBoolean, false), // For local development. If set, the API returns dummy data
}; };
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment