From 3f907f82361fe74b5ad1c2b954addc033a62f07c Mon Sep 17 00:00:00 2001 From: Seblu <sebastien.luttringer@smartjog.com> Date: Fri, 8 Jul 2011 18:50:54 +0200 Subject: [PATCH] Remove original file after adding to db This can be avoided by -p --- bin/is | 4 +++- installsystems/repository.py | 15 ++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/bin/is b/bin/is index b8ee21a..0da3959 100755 --- a/bin/is +++ b/bin/is @@ -88,7 +88,7 @@ def c_add(parser, args): raise Exception("Please select one repository") repo = Repository(repos[0]) pkg = PackageImage(args.path) - repo.add(pkg) + repo.add(pkg, delete=not args.preserve) except Exception as e: raise Exception("add failed: %s" % e) @@ -210,6 +210,8 @@ p_build.set_defaults(func=c_build) # add command parser p_add = subparsers.add_parser("add", help=c_add.__doc__.lower()) +p_add.add_argument('-p', "--preserve", action="store_true", default=False, + help="don't remove image after adding to database") p_add.add_argument("path") p_add.set_defaults(func=c_add) diff --git a/installsystems/repository.py b/installsystems/repository.py index 87d8d70..d97c468 100644 --- a/installsystems/repository.py +++ b/installsystems/repository.py @@ -85,9 +85,10 @@ class Repository(object): raise Exception("Read last file failed: %s" % e) return 0 - def add(self, image): + def add(self, image, delete=False): ''' Add a packaged image to repository + if delete is true, remove original files ''' # check local repository if istools.pathtype(self.config.path) != "file": @@ -99,17 +100,15 @@ class Repository(object): image.check("Check image and payload before copy") # adding file to repository arrow("Copying images and payload") - arrowlevel(1) for obj in [ image ] + image.payload.values(): dest = os.path.join(self.config.path, obj.md5) basesrc = os.path.basename(obj.path) if os.path.exists(dest): - arrow("Skipping %s: already exists" % basesrc) + arrow("Skipping %s: already exists" % basesrc, 1) else: - arrow("Adding %s (%s)" % (basesrc, obj.md5)) + arrow("Adding %s (%s)" % (basesrc, obj.md5), 1) istools.copy(obj.path, dest, self.config.uid, self.config.gid, self.config.fmod) - arrowlevel(-1) # copy is done. create a image inside repo r_image = PackageImage(os.path.join(self.config.path, image.md5), md5name=True) @@ -145,6 +144,12 @@ class Repository(object): self.db.commit() # update last file self.update_last() + # removing orginal files + if delete: + arrow("Removing original files") + for obj in [ image ] + image.payload.values(): + arrow(os.path.basename(obj.path), 1) + os.unlink(obj.path) def delete(self, name, version): ''' -- GitLab