Add include YAML tag.

Allows including other files in the main configuration.yaml file.  With
this functionality, passwords or other sensitive information can be
stored in a separate file from the main configuration.
pull/130/head
Andrew Thigpen 2015-05-15 19:59:43 -05:00
parent a4e0a7f235
commit 6ef60aa979
1 changed files with 12 additions and 0 deletions

View File

@ -103,6 +103,18 @@ def load_yaml_config_file(config_path):
""" Parse a YAML configuration file. """
import yaml
def yaml_include(loader, node):
"""
Loads another YAML file and embeds it using the !include tag.
Example:
device_tracker: !include device_tracker.yaml
"""
fname = os.path.join(os.path.dirname(config_path), node.value)
return load_yaml_config_file(fname)
yaml.add_constructor('!include', yaml_include)
try:
with open(config_path) as conf_file:
# If configuration file is empty YAML returns None