feat: 优化插件加载逻辑

This commit is contained in:
2023-11-09 12:07:41 +08:00
parent 3e8d1f7029
commit 507431232b
19 changed files with 371 additions and 285 deletions

View File

@@ -6,7 +6,6 @@ console.i18n("ms.core.ioc.completed", { scope: global.scope, time: (Date.now() -
import * as yaml from 'js-yaml'
import http from '@ccms/common/dist/http'
import * as fs from '@ccms/common/dist/fs'
import { VersionUtils } from '@ccms/common/dist/version'
const UUID = Java.type('java.util.UUID')
const MiaoScriptAPI = Java.type('pw.yumc.MiaoScript.api.MiaoScriptAPI')
@@ -15,22 +14,18 @@ const MiaoScriptAPI = Java.type('pw.yumc.MiaoScript.api.MiaoScriptAPI')
class MiaoScriptCore {
@Autowired(server.Console)
private Console: Console
@Autowired(plugin.PluginFolder)
private pluginFolder: string
@Autowired()
private taskManager: task.TaskManager
@Autowired()
private pluginManager: plugin.PluginManager
enable() {
process.emit('core.before.enable')
process.emit('core.before.enable', this)
this.loadServerConsole()
try {
MiaoScriptAPI.setPluginManager(this.pluginManager)
} catch (error) {
}
this.loadPlugins()
process.emit('core.after.enable')
process.emit('core.enable', this)
process.emit('core.after.enable', this)
console.i18n("ms.core.engine.completed", {
loader: base.version,
version: 'v' + global.ScriptEngineVersion,
@@ -40,40 +35,28 @@ class MiaoScriptCore {
}
loadServerConsole() {
process.emit('core.before.load.console')
process.emit('core.before.load.console', this)
//@ts-ignore
global.setGlobal('console', new this.Console(), { writable: false, configurable: false })
process.emit('core.after.load.console')
}
loadPlugins() {
process.emit('core.before.load.plugins')
let loadPluginStartTime = new Date().getTime()
console.i18n("ms.core.plugin.initialize")
this.pluginManager.scan(this.pluginFolder)
this.pluginManager.build()
this.pluginManager.load(this.pluginManager.getPlugins())
this.pluginManager.enable(this.pluginManager.getPlugins())
console.i18n("ms.core.plugin.completed", { time: (new Date().getTime() - loadPluginStartTime) / 1000 })
process.emit('core.after.load.plugins')
process.emit('core.after.load.console', this)
}
disable() {
process.emit('core.before.disable')
process.emit('core.before.disable', this)
let disableStartTime = Date.now()
console.i18n("ms.core.engine.disable")
this.pluginManager.disable(this.pluginManager.getPlugins())
this.taskManager.disable()
process.emit('core.after.disable')
process.emit('core.disable', this)
process.emit('core.after.disable', this)
loadCoreScript('exit')
process.emit('core.before.exit')
process.emit('core.before.exit', this)
process.exit(0)
process.emit('core.exit', this)
console.i18n("ms.core.engine.disable.finish", {
loader: base.version,
version: 'v' + global.ScriptEngineVersion,
time: (new Date().getTime() - disableStartTime) / 1000
})
process.emit('core.after.exit')
process.emit('core.after.exit', this)
}
}
@@ -166,14 +149,12 @@ function initialize() {
global.setGlobal('loadCoreScript', loadCoreScript)
loadCoreScript('initialize')
try {
let core = createCore()
return VersionUtils.isGreaterOrEqual(base.version, '0.22.0') ? core : core.enable()
return createCore()
} catch (error: any) {
let core = { enable: () => () => console.i18n('ms.core.engine.disable.abnormal') }
console.i18n("core.initialize.error", { error })
jsconsole.getStackTrace(error, false).forEach(line => console.log(line))
process.emit('core.initialize.error')
return VersionUtils.isGreaterOrEqual(base.version, '0.22.0') ? core : core.enable()
return { enable: () => () => console.i18n('ms.core.engine.disable.abnormal') }
} finally {
process.emit('core.after.initialize')
}