(self, reverse=False)
| 438 | return None |
| 439 | |
| 440 | def build_run_sort(self, reverse=False) -> List[List[dict]]: |
| 441 | projects = self.config["projects"] # type: List[Dict[str, Union[int, str, dict]]] |
| 442 | if self.config["sort_type"] == "simultaneous": |
| 443 | projects_group = [projects] |
| 444 | else: |
| 445 | projects_group = [] |
| 446 | projects.sort(key=lambda x: x['level']) |
| 447 | last_level = -1 |
| 448 | for i in projects: |
| 449 | if i['level'] != last_level: |
| 450 | last_level = i['level'] |
| 451 | projects_group.append([i]) |
| 452 | else: |
| 453 | projects_group[-1].append(i) |
| 454 | |
| 455 | self.running_data['length'] = len(projects) |
| 456 | self.running_data['remaining'] = len(projects) |
| 457 | for g in projects_group: |
| 458 | names = [i["name"] for i in g] |
| 459 | self.running_data["projects"].append({ |
| 460 | "names": names, |
| 461 | "msg": "", |
| 462 | "running": False, |
| 463 | "data": { |
| 464 | i["name"]: {"status": False, "msg": "", "pid": 0, "name": i["name"]} |
| 465 | for i in g |
| 466 | } |
| 467 | }) |
| 468 | |
| 469 | if reverse: |
| 470 | self.running_data["projects"] = self.running_data["projects"][::-1] |
| 471 | return projects_group[::-1] |
| 472 | |
| 473 | return projects_group |
| 474 | |
| 475 | # 真正执行启动的逻辑 |
| 476 | def real_run_start(self): |
no test coverage detected