Added !include constructor.

- This adds !include as a constructor which lets you use:
  wifi:
    !include wifisecrets.yaml
This commit is contained in:
Jimmy Hedman 2018-04-10 09:37:26 +02:00
parent de766a0100
commit 495ebd6aab

View file

@ -97,8 +97,16 @@ def _add_reference(obj, loader, node):
return obj return obj
def _include(self, node):
"""Include file"""
filename = self.construct_scalar(node)
with open(filename, 'r') as f:
return yaml.load(f, yaml.SafeLoader)
yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, _ordered_dict) yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, _ordered_dict)
yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_SEQUENCE_TAG, _construct_seq) yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_SEQUENCE_TAG, _construct_seq)
yaml.SafeLoader.add_constructor('!include', _include)
# From: https://gist.github.com/miracle2k/3184458 # From: https://gist.github.com/miracle2k/3184458