diff --git a/esphome/config.py b/esphome/config.py index 90325cbf6e..ebf1989693 100644 --- a/esphome/config.py +++ b/esphome/config.py @@ -1,6 +1,7 @@ from __future__ import annotations import abc +from collections import defaultdict from contextlib import contextmanager import contextvars import functools @@ -37,11 +38,13 @@ from esphome.yaml_util import ESPForceValue, ESPHomeDataBase, is_secret _LOGGER = logging.getLogger(__name__) -def iter_components(config): +def iter_components(config: ConfigType, platform_counts: defaultdict[str, int]): for domain, conf in config.items(): component = get_component(domain) yield domain, component if component.is_platform_component: + if not platform_counts[domain]: + continue for p_config in conf: p_name = f"{domain}.{p_config[CONF_PLATFORM]}" platform = get_platform(domain, p_config[CONF_PLATFORM]) diff --git a/esphome/writer.py b/esphome/writer.py index 4b25a25f7e..45aa996295 100644 --- a/esphome/writer.py +++ b/esphome/writer.py @@ -181,7 +181,7 @@ the custom_components folder or the external_components feature. def copy_src_tree(): source_files: list[loader.FileResource] = [] - for _, component in iter_components(CORE.config): + for _, component in iter_components(CORE.config, CORE.platform_counts): source_files += component.resources source_files_map = { Path(x.package.replace(".", "/") + "/" + x.resource): x for x in source_files