diff options
author | Lars Wirzenius <liw@liw.fi> | 2012-11-17 19:16:02 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2012-11-17 19:16:02 +0000 |
commit | 242960096014adcc7823e98ff14b9b752848cc38 (patch) | |
tree | 958c22b224e8c42b6588ab060c8f829e45dd6d5f | |
parent | 7ae3886f48c31ee95957cf984accaa955af2831c (diff) | |
download | larch-242960096014adcc7823e98ff14b9b752848cc38.tar.gz |
Return each work item as created, instead of list
This makes it possible to do smoother progress reporting.
-rwxr-xr-x | fsck-larch | 6 | ||||
-rwxr-xr-x | larch/fsck.py | 11 |
2 files changed, 8 insertions, 9 deletions
@@ -51,11 +51,11 @@ class Fsck(cliapp.Application): forest = larch.open_forest(dirname=dirname) fsck = larch.fsck.Fsck(forest, self.warning, self.error, self.settings['fix']) - fsck.find_work() + all_work = list(fsck.find_work()) - self.ts['checks'] = len(fsck.work) + self.ts['checks'] = len(all_work) self.ts['check'] = 0 - for work in fsck.work: + for work in all_work: self.ts['check'] += 1 self.ts['checkname'] = str(work) work.do() diff --git a/larch/fsck.py b/larch/fsck.py index 3a633fb..3554d95 100755 --- a/larch/fsck.py +++ b/larch/fsck.py @@ -220,18 +220,17 @@ class Fsck(object): self.warning = warning self.error = error self.fix = fix - self.work = [] def find_work(self): for node_id in self.forest.node_store.list_nodes(): tracing.trace('found node %s' % node_id) - self.work.append(CheckNode(self, node_id)) + yield CheckNode(self, node_id) for tree in self.forest.trees: - self.work.append(CheckRoot(self, tree.root.id)) + yield CheckRoot(self, tree.root.id) extra = CheckExtraNodes(self) for tree in self.forest.trees: - self.work.append(CheckRecursively(self, tree.root.id, extra.seen)) - self.work.append(extra) + yield CheckRecursively(self, tree.root.id, extra.seen) + yield extra if self.fix: - self.work.append(CommitForest(self)) + yield CommitForest(self) |