|
3 | 3 | # Copyright (c) FIRST and other WPILib contributors. |
4 | 4 | # Open Source Software; you can modify and/or share it under the terms of |
5 | 5 | # the WPILib BSD license file in the root directory of this project. |
6 | | -import os |
| 6 | +import pathlib |
7 | 7 |
|
8 | 8 |
|
9 | 9 | def main(): |
| 10 | + # Gets the folder this script is in (the hal/ directory) |
| 11 | + HAL_ROOT = pathlib.Path(__file__).parent |
10 | 12 | java_package = "edu/wpi/first/hal" |
11 | | - os.makedirs("hal/src/generated/main/native/include/hal", exist_ok=True) |
12 | | - os.makedirs(f"hal/src/generated/main/java/{java_package}", exist_ok=True) |
13 | | - usage_reporting_types_cpp = "" |
14 | | - usage_reporting_instances_cpp = "" |
15 | | - usage_reporting_types = "" |
16 | | - usage_reporting_instances = "" |
17 | | - with open("hal/src/generate/Instances.txt") as instances: |
| 13 | + (HAL_ROOT/"src/generated/main/native/include/hal").mkdir(parents=True, exist_ok=True) |
| 14 | + (HAL_ROOT/f"src/generated/main/java/{java_package}").mkdir(parents=True, exist_ok=True) |
| 15 | + usage_reporting_types_cpp = [] |
| 16 | + usage_reporting_instances_cpp = [] |
| 17 | + usage_reporting_types = [] |
| 18 | + usage_reporting_instances = [] |
| 19 | + with open(HAL_ROOT/"src/generate/Instances.txt") as instances: |
18 | 20 | for instance in instances: |
19 | | - usage_reporting_instances_cpp = f"{usage_reporting_instances_cpp}\n {instance.strip()}," |
20 | | - usage_reporting_instances = f"{usage_reporting_instances}\n public static final int {instance.strip()};" |
| 21 | + usage_reporting_instances_cpp.append(f" {instance.strip()},") |
| 22 | + usage_reporting_instances.append( |
| 23 | + f" /** {instance.strip()}. */\n" |
| 24 | + f" public static final int {instance.strip()};") |
21 | 25 |
|
22 | | - with open("hal/src/generate/ResourceType.txt") as resource_types: |
| 26 | + with open(HAL_ROOT/"src/generate/ResourceType.txt") as resource_types: |
23 | 27 | for resource_type in resource_types: |
24 | | - usage_reporting_types_cpp = f"{usage_reporting_types_cpp}\n {resource_type.strip()}," |
25 | | - usage_reporting_types = f"{usage_reporting_types}\n public static final int {resource_type.strip()};" |
26 | | - |
27 | | - with open("hal/src/generate/FRCNetComm.java.in") as java_usage_reporting: |
28 | | - contents = java_usage_reporting.read() |
29 | | - contents = contents.replace( |
30 | | - r"${usage_reporting_types}", usage_reporting_types) |
31 | | - if os.path.exists(f"hal/src/generated/main/java/{java_package}/FRCNetComm.java"): |
32 | | - with open(f"hal/src/generated/main/java/{java_package}/FRCNetComm.java", "w") as java_out: |
33 | | - java_out.write(contents.replace( |
34 | | - r"${usage_reporting_instances}", usage_reporting_instances)) |
35 | | - else: |
36 | | - with open(f"hal/src/generated/main/java/{java_package}/FRCNetComm.java", "x") as java_out: |
37 | | - java_out.write(contents.replace( |
38 | | - r"${usage_reporting_instances}", usage_reporting_instances)) |
39 | | - |
40 | | - with open("hal/src/generate/FRCUsageReporting.h.in") as cpp_usage_reporting: |
41 | | - contents = cpp_usage_reporting.read() |
42 | | - contents = contents.replace(r"${usage_reporting_types_cpp}", usage_reporting_types_cpp).replace( |
43 | | - r"${usage_reporting_instances_cpp}", usage_reporting_instances_cpp) |
44 | | - if os.path.exists("hal/src/generated/main/native/include/hal/FRCUsageReporting.h"): |
45 | | - with open("hal/src/generated/main/native/include/hal/FRCUsageReporting.h", "w") as cpp_out: |
46 | | - cpp_out.write(contents) |
47 | | - else: |
48 | | - with open("hal/src/generated/main/native/include/hal/FRCUsageReporting.h", "x") as cpp_out: |
49 | | - cpp_out.write(contents) |
| 28 | + usage_reporting_types_cpp.append(f" {resource_type.strip()},") |
| 29 | + usage_reporting_types.append( |
| 30 | + f" /** {resource_type.strip()}. */\n" |
| 31 | + f" public static final int {resource_type.strip()};") |
| 32 | + |
| 33 | + with open(HAL_ROOT/"src/generate/FRCNetComm.java.in") as java_usage_reporting: |
| 34 | + contents = (java_usage_reporting.read() |
| 35 | + .replace(r"${usage_reporting_types}", "\n".join(usage_reporting_types)) |
| 36 | + .replace(r"${usage_reporting_instances}", "\n".join(usage_reporting_instances))) |
| 37 | + |
| 38 | + with open(HAL_ROOT/f"src/generated/main/java/{java_package}/FRCNetComm.java", "w") as java_out: |
| 39 | + java_out.write(contents) |
| 40 | + |
| 41 | + with open(HAL_ROOT/"src/generate/FRCUsageReporting.h.in") as cpp_usage_reporting: |
| 42 | + contents = (cpp_usage_reporting.read() |
| 43 | + .replace(r"${usage_reporting_types_cpp}", "\n".join(usage_reporting_types_cpp)) |
| 44 | + .replace(r"${usage_reporting_instances_cpp}", "\n".join(usage_reporting_instances_cpp))) |
| 45 | + |
| 46 | + with open(HAL_ROOT/"src/generated/main/native/include/hal/FRCUsageReporting.h", "w") as cpp_out: |
| 47 | + cpp_out.write(contents) |
50 | 48 |
|
51 | 49 |
|
52 | 50 | if __name__ == "__main__": |
|
0 commit comments