def __getitem__(self, item):
mode = item[0]
item = item[1:]
content = []
try:
paths = sorted(glob(os.path.join(self.baseDir, item)))
if not paths:
raise ParseError("No files matched in include pattern '{}'!"
.format(item))
for path in paths:
content.append(self.fileLoader(path))
except OSError as e:
raise ParseError("Error including '"+item+"': " + str(e))
content = b''.join(content)
self.incDigests.append(asHexStr(hashlib.sha1(content).digest()))
if mode == '<':
var = "_{}{}".format(self.varBase, self.count)
self.count += 1
self.prolog.extend([
"{VAR}=$(mktemp)".format(VAR=var),
"_BOB_TMP_CLEANUP+=( ${VAR} )".format(VAR=var),
"base64 -d > ${VAR} <<EOF".format(VAR=var)])
self.prolog.extend(sliceString(b64encode(content).decode("ascii"), 76))
self.prolog.append("EOF")
ret = "${" + var + "}"
else:
assert mode == "'"
ret = quote(content.decode('utf8'))
return ret
评论列表
文章目录