From 669bd8688ef71fe159f1bec11c50c2deef855a6b Mon Sep 17 00:00:00 2001 From: Teppo Kurki Date: Sat, 19 Nov 2016 19:09:52 +0200 Subject: [PATCH] Add a save-and-restart hook for plugins --- lib/interfaces/plugins.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/interfaces/plugins.js b/lib/interfaces/plugins.js index bb4bb97ad..9dd86f5ec 100644 --- a/lib/interfaces/plugins.js +++ b/lib/interfaces/plugins.js @@ -100,9 +100,20 @@ function registerPlugin(app, pluginName) { debug('Registering plugin ' + pluginName) const plugin = require(pluginName)(app) const options = getPluginOptions(plugin.id) + const restart = (newConfiguration) => { + const pluginOptions = getPluginOptions(plugin.id) + pluginOptions.configuration = newConfiguration + fs.writeFile(pathForPluginId(plugin.id), JSON.stringify(pluginOptions, null, 2), function(err) { + if(err) { + console.error(err) + } + plugin.stop() + plugin.start(newConfiguration, restart) + }) + } if (options && options.enabled) { debug('Starting plugin ' + pluginName) - plugin.start(getPluginOptions(plugin.id).configuration) + plugin.start(getPluginOptions(plugin.id).configuration, restart) } app.plugins.push(plugin) @@ -125,11 +136,11 @@ function registerPlugin(app, pluginName) { return } res.send("Saved configuration for plugin " + plugin.id) + plugin.stop() + if (req.body && req.body.enabled) { + plugin.start(req.body.configuration, restart) + } }); - plugin.stop() - if (req.body && req.body.enabled) { - plugin.start(req.body.configuration) - } }) if(typeof plugin.registerWithRouter != 'undefined') { plugin.registerWithRouter(router)