import { DiscordBridgeConfig } from "../src/config"; import { Appservice } from "matrix-bot-sdk"; import { DiscordStore } from "../src/store"; import * as yaml from "js-yaml"; import * as fs from "fs"; export class ToolsHelper { public static getToolDependencies( configFile: string, regFile: string = "./discord-registration.yaml", needsStore: boolean = true): { store: DiscordStore|null, appservice: Appservice, config: DiscordBridgeConfig, } { const registration = yaml.safeLoad(fs.readFileSync(regFile, "utf8")); const config: DiscordBridgeConfig = Object.assign( new DiscordBridgeConfig(), yaml.safeLoad(fs.readFileSync(configFile, "utf8"))); config.applyEnvironmentOverrides(process.env); if (registration === null) { throw Error("Failed to parse registration file"); } const appservice = new Appservice({ bindAddress: "notathing", homeserverName: config.bridge.domain, homeserverUrl: config.bridge.homeserverUrl, port: 0, // We assume the registration is well formed registration: registration as any, }); const store = needsStore ? new DiscordStore(config.database ? config.database.filename : "discord.db") : null; return { appservice, config, store, }; } }