From 3bb171165548fc185c6960b3f230060f071fe8b2 Mon Sep 17 00:00:00 2001 From: Seblu <sebastien.luttringer@smartjog.com> Date: Wed, 24 Aug 2011 12:03:06 +0200 Subject: [PATCH] fix copy implementation. --- bin/is | 25 +++++++++++-------------- installsystems/repository.py | 15 +++++++++++++-- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/bin/is b/bin/is index 6540ad3..b52e8de 100755 --- a/bin/is +++ b/bin/is @@ -237,23 +237,20 @@ def c_copy(parser, args): ''' Copy an image from a repository to another one ''' - args.repo_filter = args.repo_src + # load repositories repoman = load_repositories(args) - repo_src = select_one_repository(repoman) - args.repo_filter = args.repo_dst - repoman = load_repositories(args) - repo_dst = select_one_repository(repoman) - if args.image_version is None: - args.image_version = repo_src.last(args.image) - if args.image_version == -1: - raise Exception("Unable to find last version of %s" % args.image) - arrow("Copying %s v%s from %s to %s" % (args.image, args.image_version, - repo_src.config.name, repo_dst.config.name)) + srcrepo = repoman[args.repo_src] + dstrepo = repoman[args.repo_dst] + # load source image + srcimg = srcrepo.get(args.image, args.image_version) + # Advertise + arrow("Copying %s v%s from %s to %s" % (srcimg.name, + srcimg.version, + srcrepo.config.name, + dstrepo.config.name)) arrowlevel(1) - pkg = repo_src.get(args.image, args.image_version) - repo_dst.add(pkg) + dstrepo.add(srcimg) arrowlevel(-1) - arrow("Done") def c_help(parser, args): ''' diff --git a/installsystems/repository.py b/installsystems/repository.py index 2e4a94b..54375bf 100644 --- a/installsystems/repository.py +++ b/installsystems/repository.py @@ -240,10 +240,13 @@ class Repository(object): ''' return self.db.ask("SELECT name,version FROM image WHERE name = ? AND version = ? LIMIT 1", (name,version)).fetchone() is not None - def get(self, name, version): + def get(self, name, version=None): ''' Return an image from a name and version ''' + # is no version take the last + if version is None: + version = self.last(name) # get file md5 from db r = self.db.ask("select md5 from image where name = ? and version = ? limit 1", (name,version)).fetchone() @@ -483,7 +486,15 @@ class RepositoryManager(object): ''' Return a repostiory by its position in list ''' - return self.repos[key] + if type(key) == int: + return self.repos[key] + elif type(key) == str: + for repo in self.repos: + if repo.config.name == key: + return repo + raise Exception("No repository named: %s" % key) + else: + raise TypeError def register(self, config): ''' -- GitLab