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( |