1
# gozerbot/plugs/plug.py
6
from gozerbot.commands import cmnds
7
from gozerbot.examples import examples
8
from gozerbot.plugins import plugins
9
from gozerbot.utils.exception import exceptionmsg, handle_exception
10
from gozerbot.gozerimport import gozer_import
11
from gozerbot.tests import tests
13
def handle_plugenable(bot, ievent):
15
""" enable and reload a plugin. """
19
if '-a' in ievent.optionset:
22
if not ievent.rest and not doall:
23
ievent.missing('<plugname>')
27
plugs = gozer_import('gozerplugs').__plugs__
29
ievent.reply("no gozerplugs package detected")
33
plugs = ievent.rest.split()
35
ievent.reply("trying to reload: ", plugs, dot=True)
42
reloaded.extend(plugins.reload('gozerplugs', plug))
43
except ImportError, ex:
44
errors.append(str(ex))
48
errors.append(exceptionmsg())
51
ievent.reply('enabled plugins: ', reloaded, dot=True)
54
ievent.reply('failed to reload: ', failed, dot=True)
57
ievent.reply('errors: ', errors, dot=True)
59
cmnds.add('plug-enable', handle_plugenable, 'OPER', options={'-a': ''}, threaded=True)
60
examples.add('plug-enable', 'enable a plugin', 'plug-enable karma')
61
tests.add('plug-enable country', 'country')
63
def handle_plugdisable(bot, ievent):
65
""" disable and unload a plugin. """
68
ievent.missing('<plugname>')
71
plugs = ievent.rest.split()
79
ievent.reply('disabled plugins: ', disabled)
81
cmnds.add('plug-disable', handle_plugdisable, 'OPER')
82
examples.add('plug-disable', 'disable a plugin', 'plug-disable karma')
83
tests.add('plug-disable country', 'country')
85
def handle_plugupgrade(bot, ievent):
87
""" upgrade a plugin(s). """
94
plugs.extend(ievent.rest.split())
96
for name, plug in plugins.plugs.iteritems():
97
if hasattr(plug, 'upgrade'):
100
ievent.reply('starting plugin upgrade for plugins: ', plugs, dot=True)
104
if not plugins.plugs.has_key(plug):
105
plugins.reload('gozerplugs', plug, enable=False)
108
s = plugins.plugs[plug].size()
109
except AttributeError:
112
if s and not '-f' in ievent.optionset:
113
alreadygot.append(plug)
117
plugins.plugs[plug].upgrade()
118
plugins.reload('gozerplugs', plug)
119
ievent.reply('upgraded %s' % plug)
120
upgraded.append(plug)
121
except AttributeError:
123
except Exception, ex:
125
errors.append(exceptionmsg())
128
ievent.reply('upgraded the following plugins: ', upgraded, dot=True)
131
ievent.reply("%s plugins already have data .. use -f to force upgrade" % ' .. '.join(alreadygot))
134
ievent.reply("errors: ", errors, dot=True)
136
cmnds.add('plug-upgrade', handle_plugupgrade, 'OPER', options={'-f': ''}, threaded=True)
137
examples.add('plug-upgrade', 'plug-upgrade {<list of plugs>] .. upgrade all plugins or a specified plugin', 'plug-upgrade url')
138
tests.add('plug-upgrade url', 'url')