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