diff options
| author | Raphael Kabo <mail@raphaelkabo.com> | 2023-05-13 19:19:37 +0100 | 
|---|---|---|
| committer | Raphael Kabo <mail@raphaelkabo.com> | 2023-05-13 19:19:37 +0100 | 
| commit | 45ecdf59f8b0c4090041ce86aad2e5f606253f0d (patch) | |
| tree | 77d1f3ea9acd0b23040f15bc757e9ba39c47af26 /src/lib | |
| parent | f1a5a9b9a0f8357e25e3b2c8d72d745093bda9c3 (diff) | |
Migrate config library to TOML
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/config.ts | 56 | 
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;  | 
