def load_configparser(config_file=None): cp = CP() if config_file is not None: config_file = resolve_file(config_file) if not os.path.isfile(config_file): es = "Could not find configuration file [%s]" raise ValueError(es % (config_file)) else: possible_config_files = ['zdstackrc', 'zdstack.ini', '~/.zdstackrc', '~/.zdstack.ini', '~/.zdstack/zdstackrc', '~/.zdstack/zdstack.ini', '/etc/zdstackrc', '/etc/zdstack.ini', '/etc/zdstack/zdstackrc' '/etc/zdstack/zdstack.ini'] possible_config_files = \ [resolve_file(x) for x in possible_config_files] if not [y for y in possible_config_files if os.path.isfile(y)]: raise ValueError("Could not find a valid configuration file") config_file = possible_config_files[0] config_fobj = StringIO(read_file(config_file)) regexp = r'^\[(.*)\]%' sections = [] for line in config_fobj.getvalue().splitlines(): if re.match(regexp, line) and line in sections: es = "Duplicate section found in config: [%s]" raise ValueError(es % (line)) config_fobj.seek(0) cp.readfp(config_fobj) cp.filename = config_file for section in cp.sections(): cp.set(section, 'name', section) return cp
def load_app(filename): filename = os.path.abspath(filename) parser = ConfigParser() parser.read([filename]) parser.filename = filename parser.defaults()['here'] = os.path.dirname(filename) parser.defaults()['__file__'] = filename return load_app_from_parser(parser)