mirror of
https://github.com/esphome/esphome.git
synced 2025-03-12 13:48:14 +00:00
feat(core): Add support for <...> includes (#8132)
This commit is contained in:
parent
051fa3a49f
commit
03e2701bd0
@ -689,7 +689,7 @@ class EsphomeCore:
|
||||
_LOGGER.debug("Adding: %s", expression)
|
||||
return expression
|
||||
|
||||
def add_global(self, expression):
|
||||
def add_global(self, expression, prepend=False):
|
||||
from esphome.cpp_generator import Expression, Statement, statement
|
||||
|
||||
if isinstance(expression, Expression):
|
||||
@ -698,6 +698,9 @@ class EsphomeCore:
|
||||
raise ValueError(
|
||||
f"Add '{expression}' must be expression or statement, not {type(expression)}"
|
||||
)
|
||||
if prepend:
|
||||
self.global_statements.insert(0, expression)
|
||||
else:
|
||||
self.global_statements.append(expression)
|
||||
_LOGGER.debug("Adding global: %s", expression)
|
||||
return expression
|
||||
|
@ -72,6 +72,9 @@ def validate_hostname(config):
|
||||
|
||||
|
||||
def valid_include(value):
|
||||
# Look for "<...>" includes
|
||||
if value.startswith("<") and value.endswith(">"):
|
||||
return value
|
||||
try:
|
||||
return cv.directory(value)
|
||||
except cv.Invalid:
|
||||
@ -360,7 +363,19 @@ async def to_code(config):
|
||||
CORE.add_job(add_arduino_global_workaround)
|
||||
|
||||
if config[CONF_INCLUDES]:
|
||||
CORE.add_job(add_includes, config[CONF_INCLUDES])
|
||||
# Get the <...> includes
|
||||
system_includes = []
|
||||
other_includes = []
|
||||
for include in config[CONF_INCLUDES]:
|
||||
if include.startswith("<") and include.endswith(">"):
|
||||
system_includes.append(include)
|
||||
else:
|
||||
other_includes.append(include)
|
||||
# <...> includes should be at the start
|
||||
for include in system_includes:
|
||||
cg.add_global(cg.RawStatement(f"#include {include}"), prepend=True)
|
||||
# Other includes should be at the end
|
||||
CORE.add_job(add_includes, other_includes)
|
||||
|
||||
if project_conf := config.get(CONF_PROJECT):
|
||||
cg.add_define("ESPHOME_PROJECT_NAME", project_conf[CONF_NAME])
|
||||
|
@ -588,9 +588,9 @@ def add(expression: Union[Expression, Statement]):
|
||||
CORE.add(expression)
|
||||
|
||||
|
||||
def add_global(expression: Union[SafeExpType, Statement]):
|
||||
def add_global(expression: Union[SafeExpType, Statement], prepend: bool = False):
|
||||
"""Add an expression to the codegen global storage (above setup())."""
|
||||
CORE.add_global(expression)
|
||||
CORE.add_global(expression, prepend)
|
||||
|
||||
|
||||
def add_library(name: str, version: Optional[str], repository: Optional[str] = None):
|
||||
|
Loading…
x
Reference in New Issue
Block a user