Commit 5910271c authored by Sebastien Luttringer's avatar Sebastien Luttringer
Browse files

move split_image_path and split_repository_list in Repository

parent 44e6964f
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ def load_repositories(args):
    if hasattr(args, "no_cache") and args.no_cache:
        args.cache = None
    # split filter in list
    args.repo_filter = split_repository_list(args.repo_filter)
    args.repo_filter = Repository.split_repository_list(args.repo_filter)
    # init repo cache object
    repoman = RepositoryManager(args.cache, timeout=args.timeout, filter=args.repo_filter)
    # register repositories (order matter)
@@ -51,14 +51,6 @@ def load_repositories(args):
        repoman.register(repoconf,  nosync=args.no_sync)
    return repoman

def split_repository_list(repolist, filter=None):
    '''
    Return a list of repository from an comma/spaces separated names of repo
    '''
    if filter is None:
        filter = Repository.is_repository_name
    return [r for r in  re.split("[ ,\n\t\v]+", repolist) if filter(r)]

def show_repositories(repoman, pattern, local=None, online=None,
                      url=False, state=True):
    '''
@@ -108,7 +100,7 @@ def select_image(name, repoman, search=None, best=False):
    else:
        if len(repoman.onlines) == 0:
            raise Exception('No online repository')
        (repo, image, version) = istools.split_image_path(name)
        (repo, image, version) = Repository.split_image_path(name)
        debug("Requested image: %s v%s in %s" % (image, version, repo))
        # repo is not specified, we need to crawl in path
        if repo is None:
@@ -371,7 +363,7 @@ def c_list(args):
    if args.repo_search == "":
        search = repoman.onlines
    else:
        search = split_repository_list(args.repo_search, lambda x: x in repoman.onlines)
        search = Repository.split_repository_list(args.repo_search, lambda x: x in repoman.onlines)
    for pattern in args.image:
        show_images(repoman, pattern,
                    all_version=args.all_version, search=search,
+20 −0
Original line number Diff line number Diff line
@@ -41,6 +41,26 @@ class Repository(object):
            raise Exception("Invalid repository name %s" % name)
        return name

    @staticmethod
    def split_image_path(path):
        '''
        Split an image path (repo/image:version)
        in a tuple (repo, image, version)
        '''
        x = re.match(u"^(?:([^/]+)/)?([^:]+)?(?::v?(.+))?$", path)
        if x is None:
            raise Exception("invalid image path: %s" % path)
        return x.group(1, 2, 3)

    @staticmethod
    def split_repository_list(repolist, filter=None):
        '''
        Return a list of repository from an comma/spaces separated names of repo
        '''
        if filter is None:
            filter = Repository.is_repository_name
        return [r for r in  re.split("[ ,\n\t\v]+", repolist) if filter(r)]

    @classmethod
    def diff(cls, repo1, repo2):
        '''
+0 −10
Original line number Diff line number Diff line
@@ -567,13 +567,3 @@ def compare_versions(v1, v2):
    fv1 = get_ver(v1)
    fv2 = get_ver(v2)
    return fv1 - fv2

def split_image_path(path):
    '''
    Split an image path (repo/image:version)
    in a tuple (repo, image, version)
    '''
    x = re.match(u"^(?:([-_\w]+)/)?([-_\w]+)(?::v?(\d+))?$", path)
    if x is None:
        raise Exception("invalid image path: %s" % path)
    return x.group(1,2,3)