From 39e4dbc299f4f3cdf3b2af4ffe1bacb66dae9041 Mon Sep 17 00:00:00 2001
From: Sebastien Luttringer <sebastien.luttringer@smartjog.com>
Date: Thu, 3 Nov 2011 14:46:03 +0100
Subject: [PATCH] Allow del command to keep payload inside repository

new option --preserve, -p is added
---
 bin/is                       | 4 +++-
 completion/bash/is           | 2 +-
 installsystems/repository.py | 7 +++++--
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/bin/is b/bin/is
index 9af1d94..e4c91e3 100755
--- a/bin/is
+++ b/bin/is
@@ -163,7 +163,7 @@ def c_del(parser, args):
                                                              repo.config.name))
             if not confirm():
                 raise Exception("Aborted!")
-        repo.delete(img.name, img.version)
+        repo.delete(img.name, img.version, payloads=not args.preserve)
 
 def c_diff(parser, args):
     '''
@@ -412,6 +412,8 @@ p_del.add_argument("-b", "--best", action="store_true", default=False,
                    help="in best mode, image is the most recent in all repositories")
 p_del.add_argument("-f", "--force", action="store_true", default=False,
                    help="delete image without confirmation")
+p_del.add_argument("-p", "--preserve", action="store_true", default=False,
+                   help="preserve payloads. doesn't remove it from repository")
 p_del.set_defaults(func=c_del)
 
 # diff command parser
diff --git a/completion/bash/is b/completion/bash/is
index a9b1eea..e91f87f 100644
--- a/completion/bash/is
+++ b/completion/bash/is
@@ -79,7 +79,7 @@ _is() {
 	    (( args > 2 )) && _image && _repo
             ;;
 	del)
-            [[ "$cur" == -* ]] && _opt '-h --help -b --best -f --force' && return 0
+            [[ "$cur" == -* ]] && _opt '-h --help -b --best -f --force -p --preserve' && return 0
             _image
             ;;
 	diff)
diff --git a/installsystems/repository.py b/installsystems/repository.py
index e10d389..d1811bc 100644
--- a/installsystems/repository.py
+++ b/installsystems/repository.py
@@ -287,7 +287,7 @@ class Repository(object):
         else:
             arrow("Nothing to clean")
 
-    def delete(self, name, version):
+    def delete(self, name, version, payloads=True):
         '''
         Delete an image from repository
         '''
@@ -307,8 +307,11 @@ class Repository(object):
         self.db.ask("DELETE FROM image WHERE md5 = ?",
                         (md5s[0],)).fetchone()
         self.db.commit()
-        # Removing script image
+        # Removing files
         arrow("Removing files from pool")
+        # if asked don't remove payloads
+        if not payloads:
+            md5s = [ md5s[0] ]
         arrowlevel(1)
         for md5 in md5s:
             self._remove_file(md5)
-- 
GitLab