import { Either, type IEither } from "@emprespresso/pengueno"; export const getRequiredEnv = (name: string): IEither => Either .fromFailable(() => Deno.env.get(name)) // could throw when no permission. .flatMap((v) => (v && Either.right(v)) || Either.left( new Error(`environment variable "${name}" is required D:`), ) ); export const getRequiredEnvVars = (vars: Array) => vars .map((envVar) => [envVar, getRequiredEnv(envVar)] as [string, IEither] ) .reduce((acc, x: [string, IEither]) => { const [envVar, eitherVal] = x; return acc.flatMap((args) => { return eitherVal.mapRight((envValue) => ({ ...args, [envVar]: envValue, })); }); }, Either.right>({}));