From cfbf3681f35663becde029dafbe5b8a0b0927ff9 Mon Sep 17 00:00:00 2001 From: dentra Date: Fri, 27 Oct 2023 00:16:43 +0300 Subject: [PATCH] Fallback to main secrets.yaml for packages (#5604) --- esphome/yaml_util.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/esphome/yaml_util.py b/esphome/yaml_util.py index 8a03c431a7..3d3fa8c5b4 100644 --- a/esphome/yaml_util.py +++ b/esphome/yaml_util.py @@ -18,6 +18,7 @@ from esphome.core import ( MACAddress, TimePeriod, DocumentRange, + CORE, ) from esphome.helpers import add_class_to_obj from esphome.util import OrderedDict, filter_yaml_files @@ -240,7 +241,18 @@ class ESPHomeLoader(yaml.SafeLoader): @_add_data_ref def construct_secret(self, node): - secrets = _load_yaml_internal(self._rel_path(SECRET_YAML)) + try: + secrets = _load_yaml_internal(self._rel_path(SECRET_YAML)) + except EsphomeError as e: + if self.name == CORE.config_path: + raise e + try: + main_config_dir = os.path.dirname(CORE.config_path) + main_secret_yml = os.path.join(main_config_dir, SECRET_YAML) + secrets = _load_yaml_internal(main_secret_yml) + except EsphomeError as er: + raise EsphomeError(f"{e}\n{er}") from er + if node.value not in secrets: raise yaml.MarkedYAMLError( f"Secret '{node.value}' not defined", node.start_mark