# plugs/eval.py
#
#

__copyright__ = 'this file is in the public domain'

from gozerbot.commands import cmnds
from gozerbot.users import users
from gozerbot.persistconfig import PersistConfig
from gozerbot.generic import handle_exception
import __builtin__

cfg = PersistConfig()
cfg.define('allow', [])

def handle_eval(bot, ievent):
    username = users.getname(ievent.userhost)
    if username not in cfg.get('allow'):
        ievent.reply('you are not on the eval list')
        return
    if not ievent.rest:
        ievent.missing('<what>')
        return
    try:
        result = eval(ievent.rest)
    except Exception, ex:
        handle_exception(ievent)
        return
    ievent.reply(str(result))

cmnds.add('eval', handle_eval, 'EVAL')

def handle_evaladd(bot, ievent):
    if ievent.userhost != bot.owner:
        ievent.reply('only owner can add a user to eval list')
        return
    try:
        name = ievent.args[0]
    except IndexError:
        ievent.missing('<name>')
        return
    cfg.append('allow', name)
    ievent.reply('%s added' % name)

cmnds.add('eval-add', handle_evaladd, 'OPER')

def handle_evaldel(bot, ievent):
    if ievent.userhost != bot.owner:
        ievent.reply('only owner can delete a user from eval list')
        return
    try:
        name = ievent.args[0]
    except IndexError:
        ievent.missing('<name>')
        return
    cfg.remove('allow', name)
    ievent.reply('%s removed' % name)

cmnds.add('eval-add', handle_evaladd, 'OPER')
