manifest.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:kdtool 作者: torchbox 项目源码 文件源码
def load_manifest(args, filename):
  # Avoid modifying the system environment.
  menv = environ.copy()

  with open(filename, 'r') as f:
    spec = f.read()

  menv['IMAGE'] = args.image
  menv['NAME'] = args.name
  menv['NAMESPACE'] = args.namespace

  for env in args.env:
    (var, value) = env.split('=', 1)
    menv[var] = value

  def envrep(m):
    funcs = {
      'b64encode': lambda v: b64encode(v.encode('utf-8')).decode('utf-8'),
    }

    bits = m.group(2).split(':')

    try:
      var = menv[bits[0]]
    except KeyError:
      stderr.write(args.manifest+ ": $" + bits[0] + " not in environment.\n")
      exit(1)

    if len(bits) > 1:
      if bits[1] not in funcs:
        stderr.write(args.manifest + ": function " + bits[1] + " unknown.\n")
      return funcs[bits[1]](var, *bits[2:])
    else:
      return var

  spec = re.sub(r"\$({)?([A-Za-z_][A-Za-z0-9_:]+)(?(1)})", envrep, spec)

  items = []
  for item in yaml.load_all(spec):
    items.append(item)
  return items
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号