|
9 | 9 | #
|
10 | 10 | # SPDX-License-Identifier: ISC
|
11 | 11 |
|
| 12 | +import json |
| 13 | +import os |
12 | 14 | from typing import List
|
13 | 15 |
|
14 | 16 | import jinja2
|
15 | 17 |
|
16 | 18 | from project_results import ProjectResults
|
| 19 | +from infrastructure.tasks import Tasks |
17 | 20 |
|
18 | 21 |
|
19 | 22 | def generate_index_html(
|
20 | 23 | template: jinja2.Template, results: List[ProjectResults]
|
21 | 24 | ):
|
22 | 25 | print('Generating index page...')
|
23 | 26 |
|
24 |
| - projects_dict = {} |
25 |
| - all_toolchains = set() |
| 27 | + cur_dir = os.path.dirname(os.path.abspath(__file__)) |
| 28 | + root_dir = os.path.join(cur_dir, '..') |
| 29 | + tasks = Tasks(root_dir) |
| 30 | + combinations = sorted( |
| 31 | + tasks.get_all_combinations(), key=lambda tup: (tup[2], tup[0], tup[1]) |
| 32 | + ) |
| 33 | + |
| 34 | + boards = dict() |
| 35 | + toolchains_dict = dict() |
| 36 | + projects = set() |
| 37 | + for project, toolchain, board in combinations: |
| 38 | + print(project, toolchain, board) |
| 39 | + if board not in boards: |
| 40 | + boards[board] = dict() |
| 41 | + |
| 42 | + board_dict = boards[board] |
| 43 | + if project not in board_dict: |
| 44 | + board_dict[project] = dict() |
| 45 | + |
| 46 | + proj_dict = board_dict[project] |
| 47 | + |
| 48 | + proj_dict[toolchain] = "skip" |
| 49 | + |
| 50 | + if board not in toolchains_dict: |
| 51 | + toolchains_dict[board] = set() |
| 52 | + |
| 53 | + toolchains_dict[board].add(toolchain) |
| 54 | + |
| 55 | + projects.add(project) |
| 56 | + |
26 | 57 | for project_results in results:
|
27 |
| - boards = {} |
28 |
| - for board, toolchains in project_results.entries.items(): |
29 |
| - board_toolchains = [] |
30 |
| - for toolchain in toolchains.keys(): |
31 |
| - board_toolchains.append(toolchain) |
32 |
| - all_toolchains.add(toolchain) |
33 |
| - boards[board] = board_toolchains |
| 58 | + entries = project_results.entries |
| 59 | + project = project_results.project_name |
34 | 60 |
|
35 |
| - projects_dict[project_results.project_name] = boards |
| 61 | + for board, toolchains in entries.items(): |
| 62 | + for toolchain in toolchains.keys(): |
| 63 | + status = entries[board][toolchain][0].status |
| 64 | + boards[board][project][toolchain] = status |
36 | 65 |
|
37 |
| - projects_list = sorted(list(projects_dict.items()), key=lambda t: t[0]) |
38 |
| - toolchain_list = sorted(list(all_toolchains)) |
| 66 | + for board, tool_list in toolchains_dict.items(): |
| 67 | + toolchains_dict[board] = sorted(list(tool_list)) |
39 | 68 |
|
40 |
| - return template.render(projects=projects_list, toolchains=toolchain_list) |
| 69 | + return template.render( |
| 70 | + boards=boards, |
| 71 | + boards_list=list(boards.keys()), |
| 72 | + toolchains=toolchains_dict, |
| 73 | + projects=projects |
| 74 | + ) |
0 commit comments