Esempio n. 1
0
def merge_extra_vars(settings, extra_vars):
    """
    Merging 'extra-vars' into 'settings'

    :param settings: Dictionary to merge extra-vars into
    :param extra_vars: List of extra-vars
    """
    for extra_var in extra_vars or []:
        if extra_var.startswith('@'):
            if not len(extra_var[1:]):
                raise exceptions.IRExtraVarsException(extra_var)
            settings_file = normalize_file(extra_var[1:])
            dict_merge(
                settings,
                yamls.load(settings_file),
                conflict_resolver=ConflictResolver.unique_append_list_resolver)

        else:
            if '=' not in extra_var:
                raise exceptions.IRExtraVarsException(extra_var)
            key, value = extra_var.split("=")
            dict_insert(settings, value, *key.split("."))
Esempio n. 2
0
    def merge_extra_vars(vars_dict, extra_vars=None):
        """Extend ``vars_dict`` with ``extra-vars``

        :param vars_dict: Dictionary to merge extra-vars into
        :param extra_vars: List of extra-vars
        """
        for extra_var in extra_vars or []:
            if extra_var.startswith('@'):
                with open(extra_var[1:]) as f_obj:
                    loaded_yml = yaml.load(f_obj)

                dict_utils.dict_merge(
                    vars_dict,
                    loaded_yml,
                    conflict_resolver=dict_utils.ConflictResolver.
                    unique_append_list_resolver)

            else:
                if '=' not in extra_var:
                    raise exceptions.IRExtraVarsException(extra_var)
                key, value = extra_var.split("=")
                dict_utils.dict_insert(vars_dict, value, *key.split("."))