X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/d1ea05b06625b91b6d4fc9580fff461b47b3570c..7c4a7d0ac3865f38f18c91ef6725c1408195c387:/config.py diff --git a/config.py b/config.py index d274509..0d4106c 100644 --- a/config.py +++ b/config.py @@ -1,8 +1,17 @@ -import ConfigParser +# Erebus IRC bot - Author: John Runyon +# "Config" class (reading/providing access to bot.config) + +from __future__ import print_function +import sys + +if sys.version_info.major < 3: + import ConfigParser +else: + import configparser as ConfigParser class Config(object): def __init__(self, filename, writeout=True): - self.__dict__['config'] = ConfigParser.SafeConfigParser() + self.__dict__['config'] = ConfigParser.RawConfigParser() self.__dict__['filename'] = filename self.__dict__['writeout'] = writeout self.config.read(filename) @@ -13,9 +22,34 @@ class Config(object): def __setattr__(self, key, value): self.config.set('erebus', key, value) + def __getitem__(self, section): #!! READ-ONLY !! + return {item: self.config.get(section, item) for item in self.config.options(section)} + + def level(self, cmd): + return self.config.get('levels', cmd) + + def setlevel(self, cmd, level): + self.config.set('levels', cmd, level) + def items(self, section='erebus'): return self.config.items(section) + def get(self, section, key, default=None): + try: + return self.config.get(section, key) + except: + return default + def getboolean(self, section, key): + val = self.get(section, key, False) + if val == False or val == "0" or val.lower() == "false": + return False + else: + return True + + def set(self, section, key, value): + self.config.set(section, key, value) + if self.writeout: self.write() + def write(self): with open(self.filename, 'wb') as configfile: self.config.write(configfile) @@ -23,10 +57,13 @@ class Config(object): def __del__(self): if self.writeout: self.write() - if __name__ == '__main__': import sys - cfg = Config(sys.argv[1], False) + if len(sys.argv) > 1: + cfg = Config(sys.argv[1], False) + else: + cfg = Config('bot.config', False) - for k, v in cfg.items(): - print k, '=', v + for s in cfg.config.sections(): + for k, v in cfg.items(s): + print("[%r][%r] = %r" % (s, k, v))