#!/usr/bin/env python # Create SHA256 summaries from all ZIP files in a folder # Optimized for CircleCI import re import os import argparse import zipfile import hashlib BLOCKSIZE = 65536 if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--folder", default="/tmp/workspace", help="Folder to look for, for ZIP files") parser.add_argument("--shafile", default="/tmp/workspace/SHA256SUMS", help="SHA256 summaries File") args = parser.parse_args() for filename in os.listdir(args.folder): if re.search('\.zip$',filename) is None: continue if not os.path.isfile(os.path.join(args.folder, filename)): continue with open(args.shafile,'a+') as shafile: hasher = hashlib.sha256() with open(os.path.join(args.folder, filename),'r') as f: buf = f.read(BLOCKSIZE) while len(buf) > 0: hasher.update(buf) buf = f.read(BLOCKSIZE) shafile.write("{0} {1}\n".format(hasher.hexdigest(),filename))