From 91f21f395d80a8e7f0c199cc0f110547a08188be Mon Sep 17 00:00:00 2001 From: Will Franklin Date: Wed, 21 Jun 2023 11:08:09 +0100 Subject: [PATCH] Add useful messages to config checks --- src/config/env.ts | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/config/env.ts b/src/config/env.ts index 9d233f78d..ae11acf32 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -2,19 +2,23 @@ import { strict as assert } from "assert"; export function s(name: string, def?: string): string { const value = process.env[name] || def; - assert(value !== undefined); + assert(value !== undefined, `Missing environment variable ${name}`); return value; } export function ss(name: string, def?: string[]): string[] { const value = process.env[name]?.split(",") || def; - assert(value !== undefined); + assert(value !== undefined, `Missing environment variable ${name}`); return value; } export function n(name: string, def?: number): number { const value = Number(process.env[name]) || def; - assert(value !== undefined && !isNaN(value)); + assert(value !== undefined, `Missing environment variable ${name}`); + assert( + !isNaN(value), + `Invalid number for environment variable ${name}: ${process.env[name]}` + ); return value; } @@ -23,7 +27,10 @@ export function b(name: string, def?: boolean): boolean { if (value === undefined && def !== undefined) { return def; } - assert(value === "true" || value === "false"); + assert( + value === "true" || value === "false", + `Invalid boolean for environment variable ${name}: ${value}` + ); return value === "true"; } @@ -33,12 +40,20 @@ export function e( def?: typeof options[number] ): typeof options[number] { const value = s(name, def); - assert(options.indexOf(value) !== -1); + assert( + options.indexOf(value) !== -1, + `Invalid value for environment variable ${name}: ${value}. Valid options are: ${options.join( + ", " + )}` + ); return value; } export function json(name: string, def?: any): any { const value = process.env[name]; - assert(value !== undefined || def !== undefined); + assert( + value !== undefined || def !== undefined, + `Missing environment variable ${name}` + ); return value === undefined ? def : JSON.parse(value); }