From f39c3b628f1aeb5660efae6592e8d3ffa1b0f9b2 Mon Sep 17 00:00:00 2001 From: xys20071111 Date: Tue, 6 Dec 2022 11:18:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=80=80=E5=87=BA=E6=97=B6?= =?UTF-8?q?=E6=9D=80=E6=AD=BB=E6=8F=92=E4=BB=B6=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Main.ts | 13 +------------ src/Plugins.ts | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 12 deletions(-) create mode 100644 src/Plugins.ts diff --git a/src/Main.ts b/src/Main.ts index 266d157..117a259 100644 --- a/src/Main.ts +++ b/src/Main.ts @@ -2,18 +2,7 @@ import config from './Config.ts' import { DanmakuReceiver } from './DanmakuReceiver.ts' import { onGraud, onLiveEnd, onLiveStart, onSuperChat, onTotalGift, receiveDanmaku, receiveGift } from './DanmakuCallbacks.ts' import { printLog } from './utils/mod.ts' - -async function launchAllPlugins() { - const pluginsList = await Deno.readDir('./plugins') - for await (const plugin of pluginsList) { - if (plugin.name === '.gitkeep') { - continue - } - Deno.run({ - cmd: [`./plugins/${plugin.name}/${plugin.name}`, `./plugins/${plugin.name}/config.json`] - }) - } -} +import { launchAllPlugins } from './Plugins.ts' const danmakuReceiver = new DanmakuReceiver(config.room_id) danmakuReceiver.on('connected', () => { diff --git a/src/Plugins.ts b/src/Plugins.ts new file mode 100644 index 0000000..2e1fccc --- /dev/null +++ b/src/Plugins.ts @@ -0,0 +1,28 @@ +const pluginSet: Set = new Set() + +export async function launchAllPlugins() { + const pluginsList = await Deno.readDir('./plugins') + for await (const plugin of pluginsList) { + if (plugin.name === '.gitkeep') { + continue + } + const pluginProcess = Deno.run({ + cmd: [`./plugins/${plugin.name}/${plugin.name}`, `./plugins/${plugin.name}/config.json`] + }) + pluginSet.add(pluginProcess) + } +} + +Deno.addSignalListener("SIGTERM", () => { + for (const pluginProcess of pluginSet) { + pluginProcess.kill() + } + Deno.exit() +}) + +Deno.addSignalListener("SIGINT", () => { + for (const pluginProcess of pluginSet) { + pluginProcess.kill() + } + Deno.exit() +}) \ No newline at end of file