diff options
Diffstat (limited to 'subcmds/prune.py')
| -rw-r--r-- | subcmds/prune.py | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/subcmds/prune.py b/subcmds/prune.py index ff2fba1d..584ee7ed 100644 --- a/subcmds/prune.py +++ b/subcmds/prune.py | |||
| @@ -1,5 +1,3 @@ | |||
| 1 | # -*- coding:utf-8 -*- | ||
| 2 | # | ||
| 3 | # Copyright (C) 2008 The Android Open Source Project | 1 | # Copyright (C) 2008 The Android Open Source Project |
| 4 | # | 2 | # |
| 5 | # Licensed under the Apache License, Version 2.0 (the "License"); | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); |
| @@ -14,21 +12,38 @@ | |||
| 14 | # See the License for the specific language governing permissions and | 12 | # See the License for the specific language governing permissions and |
| 15 | # limitations under the License. | 13 | # limitations under the License. |
| 16 | 14 | ||
| 17 | from __future__ import print_function | 15 | import itertools |
| 16 | |||
| 18 | from color import Coloring | 17 | from color import Coloring |
| 19 | from command import PagedCommand | 18 | from command import DEFAULT_LOCAL_JOBS, PagedCommand |
| 19 | |||
| 20 | 20 | ||
| 21 | class Prune(PagedCommand): | 21 | class Prune(PagedCommand): |
| 22 | common = True | 22 | COMMON = True |
| 23 | helpSummary = "Prune (delete) already merged topics" | 23 | helpSummary = "Prune (delete) already merged topics" |
| 24 | helpUsage = """ | 24 | helpUsage = """ |
| 25 | %prog [<project>...] | 25 | %prog [<project>...] |
| 26 | """ | 26 | """ |
| 27 | PARALLEL_JOBS = DEFAULT_LOCAL_JOBS | ||
| 28 | |||
| 29 | def _ExecuteOne(self, project): | ||
| 30 | """Process one project.""" | ||
| 31 | return project.PruneHeads() | ||
| 27 | 32 | ||
| 28 | def Execute(self, opt, args): | 33 | def Execute(self, opt, args): |
| 29 | all_branches = [] | 34 | projects = self.GetProjects(args) |
| 30 | for project in self.GetProjects(args): | 35 | |
| 31 | all_branches.extend(project.PruneHeads()) | 36 | # NB: Should be able to refactor this module to display summary as results |
| 37 | # come back from children. | ||
| 38 | def _ProcessResults(_pool, _output, results): | ||
| 39 | return list(itertools.chain.from_iterable(results)) | ||
| 40 | |||
| 41 | all_branches = self.ExecuteInParallel( | ||
| 42 | opt.jobs, | ||
| 43 | self._ExecuteOne, | ||
| 44 | projects, | ||
| 45 | callback=_ProcessResults, | ||
| 46 | ordered=True) | ||
| 32 | 47 | ||
| 33 | if not all_branches: | 48 | if not all_branches: |
| 34 | return | 49 | return |
