mirror of
https://github.com/esphome/esphome.git
synced 2026-10-13 09:42:50 +00:00
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
"""Print JSON ``{paths_to_export, export_vars}`` for ESP-IDF tools.
|
|
|
|
Run via ``python <this file> <idf_framework_root>``. PYTHONPATH must include
|
|
``<idf_framework_root>/tools`` so ``idf_tools`` is importable. Exits with
|
|
status 1 and prints ``Missing ESP-IDF tools: ...`` on stderr if any tool is
|
|
not installed.
|
|
"""
|
|
|
|
# pylint: disable=import-error # idf_tools is on PYTHONPATH at runtime only
|
|
|
|
import json
|
|
import os
|
|
from pathlib import Path
|
|
import sys
|
|
from types import SimpleNamespace
|
|
|
|
from idf_tools import (
|
|
TOOLS_FILE,
|
|
IDFEnv,
|
|
IDFTool,
|
|
filter_tools_info,
|
|
g,
|
|
load_tools_info,
|
|
process_tool,
|
|
)
|
|
|
|
g.idf_path = sys.argv[1]
|
|
g.idf_tools_path = os.environ.get("IDF_TOOLS_PATH")
|
|
g.tools_json = str(Path(g.idf_path) / TOOLS_FILE)
|
|
|
|
tools_info = filter_tools_info(IDFEnv.get_idf_env(), load_tools_info())
|
|
args = SimpleNamespace(prefer_system=False)
|
|
paths_to_export: list[str] = []
|
|
export_vars: dict[str, str] = {}
|
|
missing_tools: list[str] = []
|
|
|
|
for name, tool in tools_info.items():
|
|
if tool.get_install_type() == IDFTool.INSTALL_NEVER:
|
|
continue
|
|
tool_paths, tool_vars, found = process_tool(
|
|
tool, name, args, "install_cmd", "prefer_system_hint"
|
|
)
|
|
if not found:
|
|
missing_tools.append(name)
|
|
paths_to_export += tool_paths
|
|
export_vars |= tool_vars
|
|
|
|
if missing_tools:
|
|
print("Missing ESP-IDF tools: " + ", ".join(missing_tools), file=sys.stderr)
|
|
raise SystemExit(1)
|
|
|
|
print(json.dumps({"paths_to_export": paths_to_export, "export_vars": export_vars}))
|