diff --git a/archreposrv b/archreposrv index 5c29883..2a350c9 100755 --- a/archreposrv +++ b/archreposrv @@ -12,16 +12,25 @@ enable_pretty_logging(logging.DEBUG) from repomon import repomon -def main(conffile): - config = configparser.ConfigParser(default_section='multi') - config.read(conffile) - +def check_and_get_repos(config): repos = config['multi'].get('repos', 'repository') for field in ('name', 'path'): if config['multi'].get(field, None) is not None: - raise ValueError('The config %r cannot have default value.' % field) + raise ValueError('config %r cannot have default value.' % field) + + repos = {repo.strip() for repo in repos.split(',')} + for field in ('name', 'path'): + vals = [config[repo].get(field) for repo in repos] + if len(vals) != len(set(vals)): + raise ValueError('duplicate %s in different repositories.' % field) + + return repos + +def main(conffile): + config = configparser.ConfigParser(default_section='multi') + config.read(conffile) + repos = check_and_get_repos(config) - repos = [repo.strip() for repo in repos.split(',')] notifiers = [repomon(config[repo]) for repo in repos] ioloop = IOLoop.instance()