diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-12-17 18:24:34 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-12-17 18:24:34 +0000 |
commit | d2af3860723aff3de5fbe1f8c4b17e0727be28ec (patch) | |
tree | ae564361128afa4b299c38c2b22e5ba607a13bd7 /obnamlib/plugins/forget_plugin.py | |
parent | 7fbf6d3d69db0c052de0fc6737cbe4f22b05f476 (diff) | |
download | obnam-d2af3860723aff3de5fbe1f8c4b17e0727be28ec.tar.gz |
add progress reporting to forget
Diffstat (limited to 'obnamlib/plugins/forget_plugin.py')
-rw-r--r-- | obnamlib/plugins/forget_plugin.py | 19 |
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']: |