From 2234f620f8bc64aadebd34ea173cb5a61de80a07 Mon Sep 17 00:00:00 2001 From: Seblu <sebastien.luttringer@smartjog.com> Date: Fri, 26 Aug 2011 10:49:30 +0200 Subject: [PATCH] move repo filter inside repomanager --- bin/is | 14 ++++---------- installsystems/repository.py | 8 +++++++- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/bin/is b/bin/is index dd8f95c..219cd46 100755 --- a/bin/is +++ b/bin/is @@ -9,7 +9,6 @@ InstallSystems Command line Tool import os import time -import fnmatch import datetime import argparse import re @@ -30,21 +29,16 @@ def load_repositories(args): if args.no_cache: args.cache = None # init repo cache object - repoman = RepositoryManager(args.cache, timeout=args.timeout) + repoman = RepositoryManager(args.cache, timeout=args.timeout, filter=args.repo_filter) # register repositories (order matter) - # load repo configs + # load repo configs from command line if args.repo_path is not None: - # from command line repoman.register(RepositoryConfig(istools.smd5sum(args.repo_path)[:8], path=args.repo_path)) - # from config + # load repo configs from config for repoconf in RepoConfigFile(args.repo_config).repos: - if args.repo_filter is None: - repoman.register(repoconf) - else: - if len(fnmatch.filter([repoconf.name], args.repo_filter)) > 0: - repoman.register(repoconf) + repoman.register(repoconf) return repoman def select_image(name, repoman): diff --git a/installsystems/repository.py b/installsystems/repository.py index f250b85..8c6079d 100644 --- a/installsystems/repository.py +++ b/installsystems/repository.py @@ -12,6 +12,7 @@ import shutil import pwd import grp import tempfile +import fnmatch import installsystems import installsystems.tools as istools from installsystems.printer import * @@ -470,10 +471,11 @@ class RepositoryManager(object): This call implement a cache and a manager for multiple repositories ''' - def __init__(self, cache_path=None, timeout=None): + def __init__(self, cache_path=None, timeout=None, filter=None): self.timeout = 3 if timeout is None else timeout self.repos = [] self.tempfiles = [] + self.filter = filter if cache_path is None: self.cache_path = None debug("No repository cache") @@ -533,6 +535,10 @@ class RepositoryManager(object): ''' Register a repository from its config ''' + # check filter on name + if self.filter is not None: + if not fnmatch.fnmatch(config.name, self.filter): + return # if path is local, no needs to create a cache if istools.isfile(config.path): debug("Registering direct repository %s (%s)" % (config.path, config.name)) -- GitLab