mirror of
https://github.com/esphome/esphome.git
synced 2025-09-02 03:12:20 +01:00
[esp32] Regenerate boards from recommended platform version (#8938)
This commit is contained in:
77
script/generate-esp32-boards.py
Executable file
77
script/generate-esp32-boards.py
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
from esphome.components.esp32 import ESP_IDF_PLATFORM_VERSION as ver
|
||||
|
||||
version_str = f"{ver.major}.{ver.minor:02d}.{ver.patch:02d}"
|
||||
print(f"ESP32 Platform Version: {version_str}")
|
||||
|
||||
|
||||
def get_boards():
|
||||
with tempfile.TemporaryDirectory() as tempdir:
|
||||
subprocess.run(
|
||||
[
|
||||
"git",
|
||||
"clone",
|
||||
"--depth",
|
||||
"1",
|
||||
"--branch",
|
||||
f"{ver.major}.{ver.minor:02d}.{ver.patch:02d}",
|
||||
"https://github.com/pioarduino/platform-espressif32",
|
||||
tempdir,
|
||||
],
|
||||
check=True,
|
||||
)
|
||||
boards_file = os.path.join(tempdir, "boards")
|
||||
boards = {}
|
||||
for fname in os.listdir(boards_file):
|
||||
if not fname.endswith(".json"):
|
||||
continue
|
||||
with open(os.path.join(boards_file, fname), encoding="utf-8") as f:
|
||||
board_info = json.load(f)
|
||||
mcu = board_info["build"]["mcu"]
|
||||
name = board_info["name"]
|
||||
board = fname[:-5]
|
||||
variant = mcu.upper()
|
||||
boards[board] = {
|
||||
"name": name,
|
||||
"variant": f"VARIANT_{variant}",
|
||||
}
|
||||
return boards
|
||||
|
||||
|
||||
TEMPLATE = """ "%s": {
|
||||
"name": "%s",
|
||||
"variant": %s,
|
||||
},
|
||||
"""
|
||||
|
||||
|
||||
def main():
|
||||
boards = get_boards()
|
||||
# open boards.py, delete existing BOARDS variable and write the new boards dict
|
||||
boards_file_path = os.path.join(
|
||||
os.path.dirname(__file__), "..", "esphome", "components", "esp32", "boards.py"
|
||||
)
|
||||
with open(boards_file_path, encoding="UTF-8") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
with open(boards_file_path, "w", encoding="UTF-8") as f:
|
||||
for line in lines:
|
||||
if line.startswith("BOARDS = {"):
|
||||
f.write("BOARDS = {\n")
|
||||
for board, info in sorted(boards.items()):
|
||||
f.write(TEMPLATE % (board, info["name"], info["variant"]))
|
||||
f.write("}\n")
|
||||
break
|
||||
|
||||
f.write(line)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
print("ESP32 boards updated successfully.")
|
Reference in New Issue
Block a user