#!/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))