mirror of
https://github.com/home-assistant/core.git
synced 2026-05-08 17:49:37 +01:00
Automatically generate entity platform enum (#152193)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -19,6 +19,7 @@ from . import (
|
||||
dhcp,
|
||||
docker,
|
||||
icons,
|
||||
integration_info,
|
||||
json,
|
||||
manifest,
|
||||
metadata,
|
||||
@@ -44,6 +45,7 @@ INTEGRATION_PLUGINS = [
|
||||
dependencies,
|
||||
dhcp,
|
||||
icons,
|
||||
integration_info,
|
||||
json,
|
||||
manifest,
|
||||
mqtt,
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
"""Write integration constants."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from .model import Config, Integration
|
||||
from .serializer import format_python
|
||||
|
||||
|
||||
def validate(integrations: dict[str, Integration], config: Config) -> None:
|
||||
"""Validate integrations file."""
|
||||
|
||||
if config.specific_integrations:
|
||||
return
|
||||
|
||||
int_type = "entity"
|
||||
|
||||
domains = [
|
||||
integration.domain
|
||||
for integration in integrations.values()
|
||||
if integration.manifest.get("integration_type") == int_type
|
||||
# Tag is type "entity" but has no entity platform
|
||||
and integration.domain != "tag"
|
||||
]
|
||||
|
||||
code = [
|
||||
"from enum import StrEnum",
|
||||
"class EntityPlatforms(StrEnum):",
|
||||
f' """Available {int_type} platforms."""',
|
||||
]
|
||||
code.extend([f' {domain.upper()} = "{domain}"' for domain in sorted(domains)])
|
||||
|
||||
config.cache[f"integrations_{int_type}"] = format_python(
|
||||
"\n".join(code), generator="script.hassfest"
|
||||
)
|
||||
|
||||
|
||||
def generate(integrations: dict[str, Integration], config: Config) -> None:
|
||||
"""Generate integration file."""
|
||||
int_type = "entity"
|
||||
filename = "entity_platforms"
|
||||
platform_path = config.root / f"homeassistant/generated/{filename}.py"
|
||||
platform_path.write_text(config.cache[f"integrations_{int_type}"])
|
||||
Reference in New Issue
Block a user