diff options
Diffstat (limited to 'command.py')
| -rw-r--r-- | command.py | 26 |
1 files changed, 15 insertions, 11 deletions
| @@ -129,7 +129,7 @@ class Command(object): | |||
| 129 | def GetProjects(self, args, missing_ok=False, submodules_ok=False): | 129 | def GetProjects(self, args, missing_ok=False, submodules_ok=False): |
| 130 | """A list of projects that match the arguments. | 130 | """A list of projects that match the arguments. |
| 131 | """ | 131 | """ |
| 132 | all_projects = self.manifest.projects | 132 | all_projects_list = self.manifest.projects |
| 133 | result = [] | 133 | result = [] |
| 134 | 134 | ||
| 135 | mp = self.manifest.manifestProject | 135 | mp = self.manifest.manifestProject |
| @@ -140,7 +140,6 @@ class Command(object): | |||
| 140 | groups = [x for x in re.split(r'[,\s]+', groups) if x] | 140 | groups = [x for x in re.split(r'[,\s]+', groups) if x] |
| 141 | 141 | ||
| 142 | if not args: | 142 | if not args: |
| 143 | all_projects_list = list(all_projects.values()) | ||
| 144 | derived_projects = {} | 143 | derived_projects = {} |
| 145 | for project in all_projects_list: | 144 | for project in all_projects_list: |
| 146 | if submodules_ok or project.sync_s: | 145 | if submodules_ok or project.sync_s: |
| @@ -152,12 +151,12 @@ class Command(object): | |||
| 152 | project.MatchesGroups(groups)): | 151 | project.MatchesGroups(groups)): |
| 153 | result.append(project) | 152 | result.append(project) |
| 154 | else: | 153 | else: |
| 155 | self._ResetPathToProjectMap(all_projects.values()) | 154 | self._ResetPathToProjectMap(all_projects_list) |
| 156 | 155 | ||
| 157 | for arg in args: | 156 | for arg in args: |
| 158 | project = all_projects.get(arg) | 157 | projects = self.manifest.GetProjectsWithName(arg) |
| 159 | 158 | ||
| 160 | if not project: | 159 | if not projects: |
| 161 | path = os.path.abspath(arg).replace('\\', '/') | 160 | path = os.path.abspath(arg).replace('\\', '/') |
| 162 | project = self._GetProjectByPath(path) | 161 | project = self._GetProjectByPath(path) |
| 163 | 162 | ||
| @@ -172,14 +171,19 @@ class Command(object): | |||
| 172 | if search_again: | 171 | if search_again: |
| 173 | project = self._GetProjectByPath(path) or project | 172 | project = self._GetProjectByPath(path) or project |
| 174 | 173 | ||
| 175 | if not project: | 174 | if project: |
| 176 | raise NoSuchProjectError(arg) | 175 | projects = [project] |
| 177 | if not missing_ok and not project.Exists: | 176 | |
| 177 | if not projects: | ||
| 178 | raise NoSuchProjectError(arg) | 178 | raise NoSuchProjectError(arg) |
| 179 | if not project.MatchesGroups(groups): | ||
| 180 | raise InvalidProjectGroupsError(arg) | ||
| 181 | 179 | ||
| 182 | result.append(project) | 180 | for project in projects: |
| 181 | if not missing_ok and not project.Exists: | ||
| 182 | raise NoSuchProjectError(arg) | ||
| 183 | if not project.MatchesGroups(groups): | ||
| 184 | raise InvalidProjectGroupsError(arg) | ||
| 185 | |||
| 186 | result.extend(projects) | ||
| 183 | 187 | ||
| 184 | def _getpath(x): | 188 | def _getpath(x): |
| 185 | return x.relpath | 189 | return x.relpath |
