From 820e4839d51d8d5f65502bb7ed67c27e29841016 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Wed, 27 Dec 2023 16:21:44 -0500 Subject: [PATCH] feat: Allow plugins to provide Email templates --- server/emails/templates/index.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/server/emails/templates/index.ts b/server/emails/templates/index.ts index bdef23ec6..bea83dc52 100644 --- a/server/emails/templates/index.ts +++ b/server/emails/templates/index.ts @@ -1,3 +1,7 @@ +import path from "path"; +import { glob } from "glob"; +import env from "@server/env"; +import Logger from "@server/logging/Logger"; import { requireDirectory } from "@server/utils/fs"; const emails = {}; @@ -13,4 +17,16 @@ requireDirectory(__dirname).forEach(([module, id]) => { emails[id] = Email; }); +const rootDir = env.ENVIRONMENT === "test" ? "" : "build"; +glob + .sync(path.join(rootDir, "plugins/*/server/email/templates/!(*.test).[jt]s")) + .forEach((filePath: string) => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const template = require(path.join(process.cwd(), filePath)).default; + + Logger.debug("lifecycle", `Registered email template ${template.name}`); + + emails[template.name] = template; + }); + export default emails;