mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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.")
 |