diff options
Diffstat (limited to 'subcmds/abandon.py')
| -rw-r--r-- | subcmds/abandon.py | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/subcmds/abandon.py b/subcmds/abandon.py index e280d69e..3208be6b 100644 --- a/subcmds/abandon.py +++ b/subcmds/abandon.py | |||
| @@ -70,8 +70,10 @@ It is equivalent to "git branch -D <branchname>". | |||
| 70 | else: | 70 | else: |
| 71 | args.insert(0, "'All local branches'") | 71 | args.insert(0, "'All local branches'") |
| 72 | 72 | ||
| 73 | def _ExecuteOne(self, all_branches, nb, project): | 73 | @classmethod |
| 74 | def _ExecuteOne(cls, all_branches, nb, project_idx): | ||
| 74 | """Abandon one project.""" | 75 | """Abandon one project.""" |
| 76 | project = cls.get_parallel_context()["projects"][project_idx] | ||
| 75 | if all_branches: | 77 | if all_branches: |
| 76 | branches = project.GetBranches() | 78 | branches = project.GetBranches() |
| 77 | else: | 79 | else: |
| @@ -89,7 +91,7 @@ It is equivalent to "git branch -D <branchname>". | |||
| 89 | if status is not None: | 91 | if status is not None: |
| 90 | ret[name] = status | 92 | ret[name] = status |
| 91 | 93 | ||
| 92 | return (ret, project, errors) | 94 | return (ret, project_idx, errors) |
| 93 | 95 | ||
| 94 | def Execute(self, opt, args): | 96 | def Execute(self, opt, args): |
| 95 | nb = args[0].split() | 97 | nb = args[0].split() |
| @@ -102,7 +104,8 @@ It is equivalent to "git branch -D <branchname>". | |||
| 102 | _RelPath = lambda p: p.RelPath(local=opt.this_manifest_only) | 104 | _RelPath = lambda p: p.RelPath(local=opt.this_manifest_only) |
| 103 | 105 | ||
| 104 | def _ProcessResults(_pool, pm, states): | 106 | def _ProcessResults(_pool, pm, states): |
| 105 | for results, project, errors in states: | 107 | for results, project_idx, errors in states: |
| 108 | project = all_projects[project_idx] | ||
| 106 | for branch, status in results.items(): | 109 | for branch, status in results.items(): |
| 107 | if status: | 110 | if status: |
| 108 | success[branch].append(project) | 111 | success[branch].append(project) |
| @@ -111,15 +114,18 @@ It is equivalent to "git branch -D <branchname>". | |||
| 111 | aggregate_errors.extend(errors) | 114 | aggregate_errors.extend(errors) |
| 112 | pm.update(msg="") | 115 | pm.update(msg="") |
| 113 | 116 | ||
| 114 | self.ExecuteInParallel( | 117 | with self.ParallelContext(): |
| 115 | opt.jobs, | 118 | self.get_parallel_context()["projects"] = all_projects |
| 116 | functools.partial(self._ExecuteOne, opt.all, nb), | 119 | self.ExecuteInParallel( |
| 117 | all_projects, | 120 | opt.jobs, |
| 118 | callback=_ProcessResults, | 121 | functools.partial(self._ExecuteOne, opt.all, nb), |
| 119 | output=Progress( | 122 | range(len(all_projects)), |
| 120 | f"Abandon {nb}", len(all_projects), quiet=opt.quiet | 123 | callback=_ProcessResults, |
| 121 | ), | 124 | output=Progress( |
| 122 | ) | 125 | f"Abandon {nb}", len(all_projects), quiet=opt.quiet |
| 126 | ), | ||
| 127 | chunksize=1, | ||
| 128 | ) | ||
| 123 | 129 | ||
| 124 | width = max( | 130 | width = max( |
| 125 | itertools.chain( | 131 | itertools.chain( |
