diff options
Diffstat (limited to 'debian/lib')
-rw-r--r-- | debian/lib/python/config.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/debian/lib/python/config.py b/debian/lib/python/config.py new file mode 100644 index 0000000..46cc324 --- /dev/null +++ b/debian/lib/python/config.py @@ -0,0 +1,46 @@ +from debian_linux.config import ConfigParser, SchemaItemList + +class Config(dict): + config_name = "defines" + + top_schemas = { + 'base': { + 'packages': SchemaItemList(), + }, + } + + package_schemas = { + 'base': { + 'files': SchemaItemList(), + 'support': SchemaItemList(), + } + } + + def __init__(self): + self._read_base() + + def _read_base(self): + config = ConfigParser(self.top_schemas) + config.read("debian/config/%s" % self.config_name) + + packages = config['base',]['packages'] + + for section in iter(config): + real = (section[-1],) + section[:-1] + self[real] = config[section] + + for package in packages: + self._read_package(package) + + def _read_package(self, package): + config = ConfigParser(self.package_schemas) + config.read("debian/config/%s/%s" % (package, self.config_name)) + + for section in iter(config): + if len(section) > 1: + real = (section[-1], package, '_'.join(section[:-1])) + else: + real = (section[-1], package) + s = self.get(real, {}) + s.update(config[section]) + self[real] = s |