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
评论列表
文章目录