42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
const PREFIX = "DWENGO_";
|
|
const DB_PREFIX = PREFIX + "DB_";
|
|
|
|
type EnvVar = {key: string, required?: boolean, defaultValue?: any}
|
|
|
|
export const EnvVars: {[key: string]: EnvVar} = {
|
|
"DbHost": {key: DB_PREFIX + "HOST", required: true},
|
|
"DbPort": {key: DB_PREFIX + "PORT", defaultValue: 5432},
|
|
"DbName": {key: DB_PREFIX + "NAME", defaultValue: "dwengo"},
|
|
"DbUsername": {key: DB_PREFIX + "USERNAME", required: true},
|
|
"DbPassword": {key: DB_PREFIX + "PASSWORD", required: true},
|
|
"DbUpdate": {key: DB_PREFIX + "UPDATE", defaultValue: false},
|
|
} as const;
|
|
|
|
/**
|
|
* Returns the value of the given environment variable if it is set.
|
|
* Otherwise,
|
|
* - throw an error if the environment variable was required,
|
|
* - return the default value if there is one and it was not required,
|
|
* - return an empty string if the environment variable is not required and there is also no default.
|
|
* @param envVar The properties of the environment variable (from the EnvVar object).
|
|
*/
|
|
export function getEnvVar(envVar: EnvVar): string {
|
|
const value: string | undefined = process.env[envVar.key];
|
|
if (value) {
|
|
return value;
|
|
} else if (envVar.required) {
|
|
throw new Error(`Missing environment variable: ${envVar.key}`);
|
|
} else {
|
|
return envVar.defaultValue || "";
|
|
}
|
|
}
|
|
|
|
export function getNumericEnvVar(envVar: EnvVar): number {
|
|
const valueString = getEnvVar(envVar);
|
|
const value = parseInt(valueString);
|
|
if (isNaN(value)) {
|
|
throw new Error(`Invalid value for environment variable ${envVar.key}: ${valueString}. Expected a number.`)
|
|
} else {
|
|
return value;
|
|
}
|
|
}
|