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