summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorRaphael Kabo <mail@raphaelkabo.com>2023-05-13 19:19:37 +0100
committerRaphael Kabo <mail@raphaelkabo.com>2023-05-13 19:19:37 +0100
commit45ecdf59f8b0c4090041ce86aad2e5f606253f0d (patch)
tree77d1f3ea9acd0b23040f15bc757e9ba39c47af26 /src/lib
parentf1a5a9b9a0f8357e25e3b2c8d72d745093bda9c3 (diff)
Migrate config library to TOML
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.ts56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/lib/config.ts b/src/lib/config.ts
new file mode 100644
index 0000000..d235145
--- /dev/null
+++ b/src/lib/config.ts
@@ -0,0 +1,56 @@
+import fs from "fs";
+import toml from "toml";
+
+interface GathioConfig {
+ general: {
+ domain: string;
+ port: string;
+ email: string;
+ site_name: string;
+ is_federated: boolean;
+ email_logo_url: string;
+ show_kofi: boolean;
+ mail_service: "nodemailer" | "sendgrid";
+ };
+ database: {
+ mongodb_url: string;
+ };
+ nodemailer?: {
+ smtp_server: string;
+ smtp_port: string;
+ smtp_username: string;
+ smtp_password: string;
+ };
+ sendgrid?: {
+ api_key: string;
+ };
+}
+
+export const publicConfig = () => {
+ const config = getConfig();
+ return {
+ domain: config.general.domain,
+ siteName: config.general.site_name,
+ isFederated: config.general.is_federated,
+ emailLogoUrl: config.general.email_logo_url,
+ showKofi: config.general.show_kofi,
+ };
+};
+
+// Attempt to load our global config. Will stop the app if the config file
+// cannot be read (there's no point trying to continue!)
+export const getConfig = (): GathioConfig => {
+ try {
+ const config = toml.parse(
+ fs.readFileSync("./config/config.toml", "utf-8")
+ ) as GathioConfig;
+ return config;
+ } catch {
+ console.error(
+ "\x1b[31mConfiguration file not found! Have you renamed './config/config-example.toml' to './config/config.toml'?"
+ );
+ process.exit(1);
+ }
+};
+
+export default getConfig;