summary refs log tree commit diff
path: root/src/util/plugin/PluginLoader.ts
diff options
context:
space:
mode:
authorTheArcaneBrony <myrainbowdash949@gmail.com>2022-08-27 07:07:05 +0200
committerTheArcaneBrony <myrainbowdash949@gmail.com>2022-08-30 17:10:46 +0200
commitfeca7a5d620362d028c8f31353b0c996693697e3 (patch)
treeefda8bf7552085e247bc0082d151bcb8d7f31cee /src/util/plugin/PluginLoader.ts
parentprettier (diff)
downloadserver-feca7a5d620362d028c8f31353b0c996693697e3.tar.xz
Merge 'webrtc' into 'dev/staging_webrtc'
Diffstat (limited to 'src/util/plugin/PluginLoader.ts')
-rw-r--r--src/util/plugin/PluginLoader.ts39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/util/plugin/PluginLoader.ts b/src/util/plugin/PluginLoader.ts
new file mode 100644

index 00000000..000f3345 --- /dev/null +++ b/src/util/plugin/PluginLoader.ts
@@ -0,0 +1,39 @@ +import fs from "fs"; +import path from "path"; +import { Plugin, PluginManifest } from "./"; + +const root = process.env.PLUGIN_LOCATION || "../plugins"; + +let pluginsLoaded = false; +export class PluginLoader { + public static loadPlugins() { + console.log(`Plugin root directory: ${path.resolve(root)}`); + const dirs = fs.readdirSync(root).filter((x) => { + try { + fs.readdirSync(path.join(root, x)); + return true; + } catch (e) { + return false; + } + }); + console.log(dirs); + dirs.forEach(async (x) => { + let modPath = path.resolve(path.join(root, x)); + console.log(`Trying to load plugin: ${modPath}`); + const manifest = require(path.join(modPath, "plugin.json")) as PluginManifest; + console.log( + `Plugin info: ${manifest.name} (${manifest.id}), written by ${manifest.authors}, available at ${manifest.repository}` + ); + const module_ = require(path.join(modPath, "dist", "index.js")) as Plugin; + try { + await module_.init(); + module_.emit("loaded"); + } catch (error) { + module_.emit("error", error); + } + }); + + // + //module_.pluginPath = + } +}