def handle_plugreload(bot, ievent): """ arguments: <list of plugnames> - reload list of plugins. """ try: pluglist = ievent.args except (TypeError, IndexError): ievent.missing('<list of plugnames>') ; return ievent.untildone = True reloaded = [] errors = [] for plug in pluglist: if not plug: logging.error("empty plug name in %s" % str(pluglist)) ; continue modname = bot.plugs.getmodule(plug) if not modname: errors.append("can't find %s plugin" % plug) ; continue try: loaded = bot.plugs.reload(modname, force=True, showerror=True) for plug in loaded: if plug: reloaded.append(plug) logging.warn("%s reloaded" % plug) else: logging.error("got no result for %s reload" % modname) except RequireError as ex: errors.append(str(ex)) ; continue except NoSuchPlugin: errors.append("can't find %s plugin" % plug) ; continue except ImportError as ex: if plug in str(ex): logging.warn('%s - %s' % (modname, str(ex))) continue errors.append(exceptionmsg()) if False and opts.dosave: for modname in reloaded: if modname: update_mod(modname) if errors: logging.error("there were errors: %s" % str(errors)) ievent.reply('errors: ', errors) if reloaded: ievent.reply('reloaded: ', reloaded) ievent.done()
def handle_plugenable(bot, event): """ arguments" <plugname> - enable a plugin. """ if not event.rest: event.missing("<plugname>") ; return if "." in event.rest: mod = event.rest else: mod = bot.plugs.getmodule(event.rest) if not mod: event.reply("can't find module for %s" % event.rest) ; return event.reply("reloading and enabling %s" % mod) plugenable(mod) bot.enable(mod) bot.plugs.reload(mod, force=True) update_mod(mod) event.done()