diff -r 2911935c524d -r 2fcc8ef0b97d pgtoolkit/config.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pgtoolkit/config.py Tue Aug 16 16:03:46 2011 +0200 @@ -0,0 +1,44 @@ +import logging + + +class ConfigParser: + def __init__(self): + self.args = {} # config file arguments + self.registered_args = {} + self.log = logging.getLogger('config') + + def add_argument(self, name, type=str, default=None): + self.registered_args[name] = {'type':type, 'default':default} + + def load(self, fname): + # parse config file + with open(fname) as f: + exec(f.read(), self.args) + # check contents + return self.check() + + def check(self): + ok = True + for key in self.args.keys(): + if key == '__builtins__': + continue + if key in self.registered_args: + # arg registered, check type + type = self.registered_args[key]['type'] + if not isinstance(self.args[key], type): + ok = False + self.log.error("Bad type of config parameter '%s': is %s but should be %s", + key, type(self.args[key]), type) + else: + # arg not registered + ok = False + self.log.error("Unknown config parameter '%s'.", key) + return ok + + def __getattr__(self, name): + if name in self.args: + return self.args[name] + + # raise error if not found + raise AttributeError() +