check-zip-manifest.py 770 B

12345678910111213141516171819202122232425
  1. #!/usr/bin/env python3
  2. import zipfile
  3. import sys
  4. def main(zip_path, manifest_in):
  5. with open(manifest_in, 'r', encoding='utf-8') as manifest, \
  6. zipfile.ZipFile(zip_path, 'r', allowZip64=True) as z:
  7. files_in_zip = set(z.namelist())
  8. files_in_manifest = {l.strip() for l in manifest.readlines()}
  9. added_files = files_in_zip - files_in_manifest
  10. removed_files = files_in_manifest - files_in_zip
  11. if added_files:
  12. print("Files added to bundle:")
  13. for f in sorted(list(added_files)):
  14. print('+' + f)
  15. if removed_files:
  16. print("Files removed from bundle:")
  17. for f in sorted(list(removed_files)):
  18. print('-' + f)
  19. return 1 if added_files or removed_files else 0
  20. if __name__ == '__main__':
  21. sys.exit(main(sys.argv[1], sys.argv[2]))