summaryrefslogtreecommitdiff
path: root/obnamlib/plugins/forget_plugin.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-12-17 18:24:34 +0000
committerLars Wirzenius <liw@liw.fi>2011-12-17 18:24:34 +0000
commitd2af3860723aff3de5fbe1f8c4b17e0727be28ec (patch)
treeae564361128afa4b299c38c2b22e5ba607a13bd7 /obnamlib/plugins/forget_plugin.py
parent7fbf6d3d69db0c052de0fc6737cbe4f22b05f476 (diff)
downloadobnam-d2af3860723aff3de5fbe1f8c4b17e0727be28ec.tar.gz
add progress reporting to forget
Diffstat (limited to 'obnamlib/plugins/forget_plugin.py')
-rw-r--r--obnamlib/plugins/forget_plugin.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/obnamlib/plugins/forget_plugin.py b/obnamlib/plugins/forget_plugin.py
index 7ad64a8e..a7d7ed85 100644
--- a/obnamlib/plugins/forget_plugin.py
+++ b/obnamlib/plugins/forget_plugin.py
@@ -34,13 +34,19 @@ class ForgetPlugin(obnamlib.ObnamPlugin):
'''Forget (remove) specified backup generations.'''
self.app.settings.require('repository')
self.app.settings.require('client-name')
+
+ self.app.ts['gen'] = None
+ self.app.ts['gens'] = []
+ self.app.ts.format('forgetting generation %Index(gen,gens)')
self.repo = self.app.open_repository()
self.repo.lock_client(self.app.settings['client-name'])
self.app.dump_memory_profile('at beginning')
if args:
+ self.app.ts['gens'] = args
for genspec in args:
+ self.app.ts['gen'] = genspec
genid = self.repo.genspec(genspec)
self.remove(genid)
self.app.dump_memory_profile('after removing %s' % genid)
@@ -55,15 +61,20 @@ class ForgetPlugin(obnamlib.ObnamPlugin):
rules = fp.parse(self.app.settings['keep'])
keeplist = fp.match(rules, genlist)
keepids = set(genid for genid, dt in keeplist)
+ removeids = [genid
+ for genid, dt in genlist
+ if genid not in keepids]
- for genid, dt in genlist:
- if genid not in keepids:
- self.remove(genid)
- self.app.dump_memory_profile('after removing %s' % genid)
+ self.app.ts['gens'] = removeids
+ for genid in removeids:
+ self.app.ts['gen'] = genid
+ self.remove(genid)
+ self.app.dump_memory_profile('after removing %s' % genid)
self.repo.commit_client()
self.app.dump_memory_profile('after committing')
self.repo.fs.close()
+ self.app.ts.finish()
def remove(self, genid):
if not self.app.settings['pretend']: