Mercurial > treepkg > treepkg
view treepkg/readconfig.py @ 115:d7b53e7df961
Fix doc-string
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Tue, 01 Apr 2008 14:47:36 +0000 |
parents | 02c261e4443f |
children | ce9f046058b5 |
line wrap: on
line source
# Copyright (C) 2007, 2008 by Intevation GmbH # Authors: # Bernhard Herzog <bh@intevation.de> # # This program is free software under the GPL (>=v2) # Read the file COPYING coming with the software for details. """Reads the configuration file""" import sys import shlex from ConfigParser import SafeConfigParser, NoOptionError import util import packager defaults = dict(root_cmd="sudo") packager_desc = [ "name", "base_dir", "svn_url", "packager_class", ("root_cmd", shlex.split), "pbuilderrc", "deb_email", "deb_fullname", "debrevision_prefix", ] treepkg_desc = [ ("check_interval", int), "instructions_file", ] def read_config_section(parser, section, item_desc, defaults=None): if defaults is None: defaults = dict() options = dict() for item in item_desc: if isinstance(item, tuple): key, converter = item else: key = item converter = str try: value = parser.get(section, key, vars=defaults) options[key] = converter(value) except NoOptionError: print >>sys.stderr, "Missing option %r in section %r" \ % (key, section) sys.exit(1) return options def read_config(filename): """Reads the tree packager configuration from the file given by filename. The function returns a tuple with a dict ('treepkg') and a list of dicts ('packagers'). The treepkg dict contains the main configuration of the tree packager. The packagers list contains one dict with the configuratiin for each packager. """ parser = SafeConfigParser(defaults) parser.read([filename]) # extract packager configurations packagers = [] for section in parser.sections(): if section.startswith("pkg_"): vars = dict(name=section[4:]) packager_class = parser.get(section, "packager_class", vars=vars) module = packager.import_packager_module(packager_class) desc = packager_desc + module.PackageTrack.extra_config_desc packagers.append(read_config_section(parser, section, desc, defaults=vars)) # main config treepkg = read_config_section(parser, "treepkg", treepkg_desc) return treepkg, packagers if __name__ == "__main__": import pprint print pprint.pprint(read_config(sys.argv[1]))