]> jfr.im git - erebus.git/blobdiff - config.py
admin_config - add !getconfig, remove some unused functions
[erebus.git] / config.py
index 4f3e3fb144ceac0b915ed2e96d7b3983e6dd01b5..9755f84644d25ac076c05d521973bf04f4c79328 100644 (file)
--- a/config.py
+++ b/config.py
@@ -1,8 +1,9 @@
 # Erebus IRC bot - Author: John Runyon
+# vim: fileencoding=utf-8
 # "Config" class (reading/providing access to bot.config)
 
 from __future__ import print_function
-import sys
+import sys, os
 
 if sys.version_info.major < 3:
        import ConfigParser
@@ -11,7 +12,7 @@ else:
 
 class Config(object):
        def __init__(self, filename, writeout=True):
-               self.__dict__['config'] = ConfigParser.RawConfigParser()
+               self.__dict__['config'] = ConfigParser.RawConfigParser(delimiters=('=',))
                self.__dict__['filename'] = filename
                self.__dict__['writeout'] = writeout
                self.config.read(filename)
@@ -39,29 +40,45 @@ class Config(object):
                        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" or val.strip() == "":
+       def getint(self, section, key, default=0):
+               try:
+                       return int(self.config.get(section, key))
+               except:
+                       return default
+       def getboolean(self, section, key, default=False):
+               val = self.get(section, key, default)
+               if type(val) is bool:
+                       return val
+               elif val == "0" or val.lower() == "false":
                        return False
                else:
                        return True
 
        def set(self, section, key, value):
-               self.config.set(section, key, value)
+               if not self.config.has_section(section):
+                       self.config.add_section(section)
+               self.config.set(section, key, str(value))
+               if self.writeout: self.write()
+
+       def delete(self, section, key):
+               if self.config.has_section(section):
+                       self.config.remove_option(section, key)
+               if self.writeout: self.write()
 
        def write(self):
-               with open(self.filename, 'wb') as configfile:
+               with open(self.filename+'.tmp', 'w') as configfile:
                        self.config.write(configfile)
+                       os.rename(configfile.name, self.filename)
 
        def __del__(self):
                if self.writeout: self.write()
 
-def setup(fn='bot.config', writeout=True):
-       return Config(fn, writeout)
-
 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 s in cfg.config.sections():
                for k, v in cfg.items(s):