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