]> jfr.im git - erebus.git/blame - config.py
more py3 compat
[erebus.git] / config.py
CommitLineData
931c88a4 1# Erebus IRC bot - Author: John Runyon
2# "Config" class (reading/providing access to bot.config)
3
a28e2ae9 4from __future__ import print_function
5import sys
6
7if sys.version_info.major < 3:
8 import ConfigParser
9else:
10 import configparser as ConfigParser
b25d4368 11
12class Config(object):
b25d4368 13 def __init__(self, filename, writeout=True):
f0118d05 14 self.__dict__['config'] = ConfigParser.RawConfigParser()
b25d4368 15 self.__dict__['filename'] = filename
16 self.__dict__['writeout'] = writeout
17 self.config.read(filename)
18
19 def __getattr__(self, key):
20 return self.config.get('erebus', key)
21
22 def __setattr__(self, key, value):
23 self.config.set('erebus', key, value)
24
93a06339 25 def __getitem__(self, section): #!! READ-ONLY !!
26 return {item: self.config.get(section, item) for item in self.config.options(section)}
27
b2a896c8 28 def level(self, cmd):
29 return self.config.get('levels', cmd)
30
31 def setlevel(self, cmd, level):
32 self.config.set('levels', cmd, level)
33
db50981b 34 def items(self, section='erebus'):
35 return self.config.items(section)
b25d4368 36
c715235b 37 def get(self, section, key, default=None):
38 try:
39 return self.config.get(section, key)
40 except:
41 return default
93a06339 42 def getboolean(self, section, key):
43 val = self.get(section, key, False)
44 if val == False or val == "0" or val.lower() == "false" or val.strip() == "":
45 return False
46 else:
47 return True
c0eee1b4 48
49 def set(self, section, key, value):
50 self.config.set(section, key, value)
51
b25d4368 52 def write(self):
a12f7519 53 with open(self.filename, 'wb') as configfile:
b25d4368 54 self.config.write(configfile)
a4eacae2 55
b25d4368 56 def __del__(self):
57 if self.writeout: self.write()
58
93a06339 59def setup(fn='bot.config', writeout=True):
60 return Config(fn, writeout)
b25d4368 61
62if __name__ == '__main__':
63 import sys
64 cfg = Config(sys.argv[1], False)
65
0f8352dd 66 for s in cfg.config.sections():
67 for k, v in cfg.items(s):
a28e2ae9 68 print("[%r][%r] = %r" % (s, k, v))