Ejemplo n.º 1
0
def resolve(*path):
  x = expand(*path)
  for f in x:
    try:
      return Yaml.filename(f)
    except:
      continue
Ejemplo n.º 2
0
def _resolve_extensions(data):
  extensions = set()
  datas = [data]

  while True:
    extension = data.get('inherit')
    if not extension:
      break
    extension = Yaml.filename(extension)

    if extension in extensions:
      raise Exception('Infinite circular extension for %s' % extension)

    try:
      data = CommandFile.load('score', extension)
    except Exception as e:
      raise Exception("Couldn't find extension for %s: %s" % (extension, str(e)))

    if len(data) > 1:
      LOGGER.error("More than one element in extension %s", extension)
    data = data[0]

    datas.append(data)
    extensions.add(extension)

  result = {}
  for data in reversed(datas):
    result.update(data)
  if extensions:
    del result['inherit']

  return result