diff --git a/bin/is b/bin/is index dd8f95c544fafe643d991fadc1bb0ed37e51101a..219cd4635ae068f19439e553994fdad05817c717 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 f250b856f3f733edbc8ded8709ee6de0402aa96f..8c6079d183efa7414223248d20fff723175f1f11 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))