添加退出时杀死插件的功能

This commit is contained in:
xys20071111 2022-12-06 11:18:30 +08:00
parent e70174f4a4
commit f39c3b628f
No known key found for this signature in database
GPG Key ID: 29CB7FFE349CFD03
2 changed files with 29 additions and 12 deletions

View File

@ -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', () => {

28
src/Plugins.ts Normal file
View File

@ -0,0 +1,28 @@
const pluginSet: Set<Deno.Process> = 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()
})