diff options
Diffstat (limited to 'configinterface.py')
| -rw-r--r-- | configinterface.py | 50 | 
1 files changed, 50 insertions, 0 deletions
diff --git a/configinterface.py b/configinterface.py new file mode 100644 index 00000000000..7bc1d4731a7 --- /dev/null +++ b/configinterface.py @@ -0,0 +1,50 @@ +import ConfigParser + +DEF_SECT = 'global' + +class GConffile(object): + +    def __init__(self, path, peers): +        if peers: +            self.section = 'peers ' + ' '.join(peers) +        else: +            self.section = DEF_SECT +        self.path = path +        self.config = ConfigParser.RawConfigParser({}, dict) +        self.config.read(path) + +    def update_to(self, dct): +        for sect in set([DEF_SECT, self.section]): +            if self.config.has_section(sect): +                dct.update(self.config._sections[sect]) + +    def get(self, opt=None): +        d = {} +        self.update_to(d) +        if opt: +            d = {opt: d.get(opt, "")} +        for k, v in d.iteritems(): +            if k == '__name__': +                continue +            print("%s: %s" % (k, v)) + +    def write(self): +        f = None +        try: +            f = open(self.path, 'wb') +            self.config.write(f) +        finally: +            if f: +                f.close() + +    def set(self, opt, val): +        if not self.config.has_section(self.section): +            self.config.add_section(self.section) +        self.config.set(self.section, opt, val) +        self.write() + +    def delete(self, opt): +        if not self.config.has_section(self.section): +            return +        if self.config.remove_option(self.section, opt): +            self.write()  | 
