def recalculate(self): self.config = None self.changed = {} for _, configs in self.file_configs: self.config = Merge.merge(self.config, *configs) self.changed = Merge.merge(self.changed, *configs[2:]) arg = copy.deepcopy(self.arg_config) clean_arg = Merge.difference_strict(arg, self.changed) self.config = Merge.merge_for_config(self.config, clean_arg) return self.config
def _read_file_configs(self): self.file_configs = [] base_config = None for f in reversed(CommandFile.expand('config.yml')): configs = Yaml.read(f, 'config') for c in configs: if base_config: base_config = Merge.merge_for_config(base_config, c) else: base_config = copy.deepcopy(c) while len(configs) < 3: configs.append({}) self.file_configs.append([f, configs])
def _merge_file_config(config): for f in list(reversed(CommandFile.expand('config.yml')))[1:]: try: file_configs = Yaml.read(f) except Exception as e: _add_exception_suffix(e, 'while reading config file', f) raise for cfg in file_configs: try: config = Merge.merge_for_config(config, cfg) except Exception as e: _add_exception_suffix(e, ' while merging config file', f) raise return config