def buildssmpkg()

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