mirror of
https://github.com/esphome/esphome.git
synced 2026-08-17 10:52:56 +08:00
60 lines
1.8 KiB
Python
Executable File
60 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""Generate esphome/component_aliases.py from component ALIASES declarations.
|
|
|
|
Run without arguments to regenerate the registry; ``--check`` (run in CI)
|
|
verifies it is up to date.
|
|
"""
|
|
|
|
import argparse
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
# The root directory of the repo
|
|
root = Path(__file__).parent.parent
|
|
# Make the repo's esphome package win over any installed copy
|
|
sys.path.insert(0, str(root))
|
|
|
|
from esphome.helpers import write_file_if_changed # noqa: E402
|
|
from esphome.loader import _build_alias_map # noqa: E402
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"--check",
|
|
help="Check if the alias registry is up to date.",
|
|
action="store_true",
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
registry_file = root / "esphome" / "component_aliases.py"
|
|
|
|
HEADER = '''"""Component alias registry.
|
|
|
|
Generated by script/build_alias_registry.py - do not edit manually.
|
|
See the component-alias section of esphome/loader.py.
|
|
"""
|
|
|
|
# alias -> (canonical component, removal version or None)
|
|
COMPONENT_ALIASES: dict[str, tuple[str, str | None]] = {
|
|
'''
|
|
|
|
# _build_alias_map scans the real component tree and already rejects
|
|
# duplicate and shadowing aliases with an EsphomeError.
|
|
_, alias_meta = _build_alias_map()
|
|
|
|
lines = [HEADER]
|
|
for alias, meta in sorted(alias_meta.items()):
|
|
removal = f'"{meta.removal_version}"' if meta.removal_version else "None"
|
|
lines.append(f' "{alias}": ("{meta.canonical}", {removal}),\n')
|
|
lines.append("}\n")
|
|
content = "".join(lines)
|
|
|
|
if args.check:
|
|
if registry_file.read_text(encoding="utf-8") != content:
|
|
print("Component alias registry is not up to date.")
|
|
print("Please run `script/build_alias_registry.py`")
|
|
sys.exit(1)
|
|
print("Component alias registry is up to date")
|
|
else:
|
|
write_file_if_changed(registry_file, content)
|
|
print(f"Wrote {registry_file}")
|