in tools/ssm/ssm_manifest.py [0:0]
def buildssmpkg(pkg_version, ssm_base, ssm_files, ssm_installers, output_dir):
if not os.path.exists(output_dir):
os.mkdir(output_dir)
file_hash = {}
for ssm_file in ssm_files.keys():
zip_file = output_dir + "/" + ssm_file + ".zip"
ssm_file_path = ssm_base + "/" + ssm_file
if not os.path.isfile(zip_file):
shutil.copy(ssm_files[ssm_file], ssm_file_path)
zf = zipfile.ZipFile(zip_file, mode="w")
file_list = os.listdir(ssm_file_path)
for file in file_list:
zf.write(ssm_file_path + "/" + file, file)
zf.close()
sha256 = hashlib.sha256()
with open(zip_file, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
sha256.update(chunk)
file_hash[ssm_file] = sha256.hexdigest()
ssm_sha256_list = {}
for ssm_file in ssm_files.keys():
ssm_file_zip = ssm_base + "/" + ssm_file + ".zip"
ssm_sha256_list[ssm_file + ".zip"] = {
"checksums": {"sha256": file_hash[ssm_file]}
}
manifest = {
"schemaVersion": "2.0",
"version": pkg_version,
"packages": ssm_installers,
"files": ssm_sha256_list,
}
print(json.dumps(manifest))
with open(output_dir + "/manifest.json", "w") as f:
json.dump(manifest, f)
return manifest