diff --git a/bin/is b/bin/is index 9af1d94cf1d820e2f345c54ac5fb9b74631a806a..e4c91e30a85fe2efbd8255528fe470839b44e68c 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 a9b1eea5da6b63a4d0c3f4e2d77ce759e3993445..e91f87f9a4407a9356b93c658a82e91f5c0a5010 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 e10d3898e33563bee62841e246be173101c9090a..d1811bcabb0c5f7ed0ea7bfef3721693f691b3da 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)