Example #1
0
  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
Example #2
0
  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])
Example #3
0
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