Example #1
0
    def save(self):
        saved_files = []
        for f, settings in self.file_settings:
            if len(settings) > 2 and settings[2]:
                saved_files.append(f)
                settings[1] = Merge.merge(*settings[1:])
                while len(settings) > 2:
                    settings.pop()
                if os.path.exists(f):
                    with open(f, 'r') as fo:
                        data = fo.read().split(Yaml.SEPARATOR)[0]
                else:
                    data = ''

                parent = os.path.dirname(f)
                if not os.path.exists(parent):
                    from echomesh.util import Log
                    Log.logger(__name__).info('Creating directory %s.', parent)
                    os.makedirs(parent)

                with open(f, 'wb') as fw:
                    if data:
                        fw.write(data)
                        fw.write(Yaml.SEPARATOR)
                    fw.write(Yaml.encode_one(settings[1]))

        self.arg_settings = Merge.difference_strict(self.arg_settings,
                                                    self.changed)
        self.recalculate()
        return saved_files
Example #2
0
    def save(self):
        saved_files = []
        for f, settings in self.file_settings:
            if len(settings) > 2 and settings[2]:
                saved_files.append(f)
                settings[1] = Merge.merge(*settings[1:])
                while len(settings) > 2:
                    settings.pop()
                if os.path.exists(f):
                    with open(f, 'r') as fo:
                        data = fo.read().split(Yaml.SEPARATOR)[0]
                else:
                    data = ''

                parent = os.path.dirname(f)
                if not os.path.exists(parent):
                    from echomesh.util import Log
                    Log.logger(__name__).info('Creating directory %s.', parent)
                    os.makedirs(parent)

                with open(f, 'wb') as fw:
                    if data:
                        fw.write(data)
                        fw.write(Yaml.SEPARATOR)
                    fw.write(Yaml.encode_one(settings[1]))

        self.arg_settings = Merge.difference_strict(
            self.arg_settings, self.changed)
        self.recalculate()
        return saved_files
Example #3
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 #4
0
    def recalculate(self):
        self.args = None
        self.changed = {}
        for _, settings in self.file_settings:
            self.args = Merge.merge(self.args, *settings)
            self.changed = Merge.merge(self.changed, *settings[2:])

        arg = copy.deepcopy(self.arg_settings)
        clean_arg = Merge.difference_strict(arg, self.changed)
        self.args = Merge.merge_for_settings(self.args, clean_arg)

        return self.args
Example #5
0
    def recalculate(self):
        self.args = None
        self.changed = {}
        for _, settings in self.file_settings:
            self.args = Merge.merge(self.args, *settings)
            self.changed = Merge.merge(self.changed, *settings[2:])

        arg = copy.deepcopy(self.arg_settings)
        clean_arg = Merge.difference_strict(arg, self.changed)
        self.args = Merge.merge_for_settings(self.args, clean_arg)

        return self.args
Example #6
0
def merge_config():
  config = Merge.merge(*Yaml.read(CommandFile.config_file('default')))
  assert config, 'Unable to read default config file'

  _set_project_path()
  config = _merge_file_config(config)
  merge_assignments(config, Args.ARGS)
  return config
Example #7
0
    def assign(self, args, index=2):  # default is 'master'
        settings = self.file_settings[index][1]

        while len(settings) < 3:
            settings.append({})
        assignments = self._args_to_settings(args, _ASSIGNMENT_ERROR)
        settings[2] = Merge.merge(settings[2], assignments)
        self.recalculate()
        return assignments
Example #8
0
    def assign(self, args, index=2):  # default is 'master'
        settings = self.file_settings[index][1]

        while len(settings) < 3:
            settings.append({})
        assignments = self._args_to_settings(args, _ASSIGNMENT_ERROR)
        settings[2] = Merge.merge(settings[2], assignments)
        self.recalculate()
        return assignments
Example #9
0
  def assign(self, args, index=2):  # default is 'master'
    configs = self.file_configs[index][1]

    while len(configs) < 3:
      configs.append({})
    assignments = self._assignment_to_config(args, _ASSIGNMENT_ERROR)
    configs[2] = Merge.merge(configs[2], assignments)
    self.recalculate()
    return assignments
Example #10
0
  def save(self):
    saved_files = []
    for f, configs in self.file_configs:
      if len(configs) > 2 and configs[2]:
        saved_files.append(f)
        configs[1] = Merge.merge(*configs[1:])
        while len(configs) > 2:
          configs.pop()
        with open(f, 'r') as fo:
          data = fo.read().split(Yaml.SEPARATOR)[0]

        with open(f, 'wb') as fw:
          fw.write(data)
          fw.write(Yaml.SEPARATOR)
          fw.write(Yaml.encode_one(configs[1]))

    self.arg_config = Merge.difference_strict(self.arg_config, self.changed)
    self.recalculate()
    return saved_files
Example #11
0
    def __init__(self, name, suffix):
        if suffix.startswith('.'):
            self.suffix = suffix
        else:
            self.suffix = '.' + suffix

        name_file = DataFile.clean('cache', name)
        self.cachedir = os.path.abspath(os.path.join(*name_file))
        MakeDirs.makedirs(self.cachedir)
        self.manifest_file = os.path.join(self.cachedir, MANIFEST_NAME)
        self.manifest = Merge.merge(*Yaml.read(self.manifest_file))
Example #12
0
  def __init__(self, name, suffix):
    if suffix.startswith('.'):
      self.suffix = suffix
    else:
      self.suffix = '.' + suffix

    name_file = CommandFile.clean('cache', name)
    self.cachedir = os.path.abspath(os.path.join(*name_file))
    MakeDirs.makedirs(self.cachedir)
    self.manifest_file = os.path.join(self.cachedir, MANIFEST_NAME)
    self.manifest = Merge.merge(*Yaml.read(self.manifest_file))
Example #13
0
 def test_simple(self):
     self.assertEqual(Merge.merge({
         1: 2,
         3: 5
     }, {
         1: 4,
         2: 7
     }), {
         1: 4,
         2: 7,
         3: 5
     })
Example #14
0
    def _read_file_settings(self):
        self.file_settings = []
        base_settings = None

        for f in reversed(DataFile.expand_settings()):
            settings = Yaml.read(f, 'settings')
            for c in settings:
                if base_settings:
                    base_settings = Merge.merge_for_settings(base_settings, c)
                else:
                    base_settings = copy.deepcopy(c)
            while len(settings) < 3:
                settings.append({})
            self.file_settings.append([f, settings])
Example #15
0
    def _read_file_settings(self):
        self.file_settings = []
        base_settings = None

        for f in reversed(DataFile.expand_settings()):
            settings = Yaml.read(f, 'settings')
            for c in settings:
                if base_settings:
                    base_settings = Merge.merge_for_settings(base_settings, c)
                else:
                    base_settings = copy.deepcopy(c)
            while len(settings) < 3:
                settings.append({})
            self.file_settings.append([f, settings])
Example #16
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 #17
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
Example #18
0
 def test_simple2(self):
     self.assertEqual(
         Merge.merge({
             1: 2,
             3: 5
         }, {
             1: 4,
             2: 7
         }, {
             1: 23,
             5: 1000
         }), {
             1: 23,
             2: 7,
             3: 5,
             5: 1000
         })
Example #19
0
 def test_simple2(self):
     self.assertEqual(
         Merge.merge({1: 2, 3: 5}, {1: 4, 2: 7}, {1: 23, 5: 1000}),
         {1: 23, 2: 7, 3: 5, 5: 1000})
Example #20
0
def config(_, scope, cfg):
  f = CommandFile.config_file(scope)
  configs = Yaml.read(f) + [cfg]
  Yaml.write(f, Merge.merge(*configs))
  # TODO: needs to propagate!
  LOGGER.info('Changing configuration for %s', scope)
Example #21
0
 def test_simple3(self):
     self.assertEqual(Merge.merge({1: 2, 3: 5}), {1: 2, 3: 5})
Example #22
0
def settings(_, scope, cfg):
    f = DataFile.settings_file(scope)
    settings = Yaml.read(f) + [cfg]
    Yaml.write(f, Merge.merge(*settings))
    # TODO: needs to propagate!
    LOGGER.info('Changing settings for %s', scope)
Example #23
0
 def test_simple3(self):
     self.assertEqual(Merge.merge({1: 2, 3: 5}), {1: 2, 3: 5})
Example #24
0
def info():
    return Merge.merge(names(), addresses())
Example #25
0
 def test_simple(self):
     self.assertEqual(Merge.merge({1: 2, 3: 5}, {1: 4, 2: 7}),
                      {1: 4, 2: 7, 3: 5})
Example #26
0
def settings(_, scope, cfg):
    f = DataFile.settings_file(scope)
    settings = Yaml.read(f) + [cfg]
    Yaml.write(f, Merge.merge(*settings))
    # TODO: needs to propagate!
    LOGGER.info('Changing settings for %s', scope)