| 571 | self.mixins = contents['mixins'] |
| 572 | |
| 573 | def ReadIsolateMap(self): |
| 574 | if not self.args.isolate_map_files: |
| 575 | self.args.isolate_map_files = [self.default_isolate_map] |
| 576 | |
| 577 | for f in self.args.isolate_map_files: |
| 578 | if not self.Exists(f): |
| 579 | raise MBErr('isolate map file not found at %s' % f) |
| 580 | isolate_maps = {} |
| 581 | for isolate_map in self.args.isolate_map_files: |
| 582 | try: |
| 583 | isolate_map = ast.literal_eval(self.ReadFile(isolate_map)) |
| 584 | duplicates = set(isolate_map).intersection(isolate_maps) |
| 585 | if duplicates: |
| 586 | raise MBErr( |
| 587 | 'Duplicate targets in isolate map files: %s.' % |
| 588 | ', '.join(duplicates)) |
| 589 | isolate_maps.update(isolate_map) |
| 590 | except SyntaxError as e: |
| 591 | raise MBErr('Failed to parse isolate map file "%s": %s' % |
| 592 | (isolate_map, e)) from e |
| 593 | return isolate_maps |
| 594 | |
| 595 | def ConfigFromArgs(self): |
| 596 | if self.args.config: |