Don't call plugin register/unregister methods
This commit is contained in:
parent
257fa0d1a0
commit
841ddf8886
|
@ -32,5 +32,10 @@ async function run () {
|
|||
await initDatabaseModels(true)
|
||||
|
||||
const toInstall = options.npmName || options.pluginPath
|
||||
await PluginManager.Instance.install(toInstall, options.pluginVersion, !!options.pluginPath)
|
||||
await PluginManager.Instance.install({
|
||||
toInstall,
|
||||
version: options.pluginVersion,
|
||||
fromDisk: !!options.pluginPath,
|
||||
register: false
|
||||
})
|
||||
}
|
||||
|
|
|
@ -25,5 +25,5 @@ async function run () {
|
|||
await initDatabaseModels(true)
|
||||
|
||||
const toUninstall = options.npmName
|
||||
await PluginManager.Instance.uninstall(toUninstall)
|
||||
await PluginManager.Instance.uninstall({ npmName: toUninstall, unregister: false })
|
||||
}
|
||||
|
|
|
@ -150,7 +150,7 @@ async function installPlugin (req: express.Request, res: express.Response) {
|
|||
: undefined
|
||||
|
||||
try {
|
||||
const plugin = await PluginManager.Instance.install(toInstall, pluginVersion, fromDisk)
|
||||
const plugin = await PluginManager.Instance.install({ toInstall, version: pluginVersion, fromDisk })
|
||||
|
||||
return res.json(plugin.toFormattedJSON())
|
||||
} catch (err) {
|
||||
|
@ -177,7 +177,7 @@ async function updatePlugin (req: express.Request, res: express.Response) {
|
|||
async function uninstallPlugin (req: express.Request, res: express.Response) {
|
||||
const body: ManagePlugin = req.body
|
||||
|
||||
await PluginManager.Instance.uninstall(body.npmName)
|
||||
await PluginManager.Instance.uninstall({ npmName: body.npmName })
|
||||
|
||||
return res.status(HttpStatusCode.NO_CONTENT_204).end()
|
||||
}
|
||||
|
|
|
@ -325,7 +325,14 @@ export class PluginManager implements ServerHook {
|
|||
|
||||
// ###################### Installation ######################
|
||||
|
||||
async install (toInstall: string, version?: string, fromDisk = false) {
|
||||
async install (options: {
|
||||
toInstall: string
|
||||
version?: string
|
||||
fromDisk?: boolean // default false
|
||||
register?: boolean // default true
|
||||
}) {
|
||||
const { toInstall, version, fromDisk = false, register = true } = options
|
||||
|
||||
let plugin: PluginModel
|
||||
let npmName: string
|
||||
|
||||
|
@ -357,12 +364,14 @@ export class PluginManager implements ServerHook {
|
|||
|
||||
logger.info('Successful installation of plugin %s.', toInstall)
|
||||
|
||||
await this.registerPluginOrTheme(plugin)
|
||||
if (register) {
|
||||
await this.registerPluginOrTheme(plugin)
|
||||
}
|
||||
} catch (rootErr) {
|
||||
logger.error('Cannot install plugin %s, removing it...', toInstall, { err: rootErr })
|
||||
|
||||
try {
|
||||
await this.uninstall(npmName)
|
||||
await this.uninstall({ npmName })
|
||||
} catch (err) {
|
||||
logger.error('Cannot uninstall plugin %s after failed installation.', toInstall, { err })
|
||||
|
||||
|
@ -394,16 +403,23 @@ export class PluginManager implements ServerHook {
|
|||
// Unregister old hooks
|
||||
await this.unregister(npmName)
|
||||
|
||||
return this.install(toUpdate, version, fromDisk)
|
||||
return this.install({ toInstall: toUpdate, version, fromDisk })
|
||||
}
|
||||
|
||||
async uninstall (npmName: string) {
|
||||
async uninstall (options: {
|
||||
npmName: string
|
||||
unregister?: boolean // default true
|
||||
}) {
|
||||
const { npmName, unregister } = options
|
||||
|
||||
logger.info('Uninstalling plugin %s.', npmName)
|
||||
|
||||
try {
|
||||
await this.unregister(npmName)
|
||||
} catch (err) {
|
||||
logger.warn('Cannot unregister plugin %s.', npmName, { err })
|
||||
if (unregister) {
|
||||
try {
|
||||
await this.unregister(npmName)
|
||||
} catch (err) {
|
||||
logger.warn('Cannot unregister plugin %s.', npmName, { err })
|
||||
}
|
||||
}
|
||||
|
||||
const plugin = await PluginModel.loadByNpmName(npmName)
|
||||
|
|
Loading…
Reference in New Issue