28 lines
		
	
	
	
		
			763 B
			
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
	
		
			763 B
			
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | #!/usr/bin/env python | ||
|  | 
 | ||
|  | import zipfile | ||
|  | import sys | ||
|  | 
 | ||
|  | def main(zip_path, manifest_in): | ||
|  |   with open(manifest_in, 'r') as manifest, \ | ||
|  |       zipfile.ZipFile(zip_path, 'r', allowZip64=True) as z: | ||
|  |     files_in_zip = set(z.namelist()) | ||
|  |     files_in_manifest = set([l.strip() for l in manifest.readlines()]) | ||
|  |   added_files = files_in_zip - files_in_manifest | ||
|  |   removed_files = files_in_manifest - files_in_zip | ||
|  |   if added_files: | ||
|  |     print("Files added to bundle:") | ||
|  |     for f in sorted(list(added_files)): | ||
|  |       print('+' + f) | ||
|  |   if removed_files: | ||
|  |     print("Files removed from bundle:") | ||
|  |     for f in sorted(list(removed_files)): | ||
|  |       print('-' + f) | ||
|  |   if added_files or removed_files: | ||
|  |     return 1 | ||
|  |   else: | ||
|  |     return 0 | ||
|  | 
 | ||
|  | if __name__ == '__main__': | ||
|  |   sys.exit(main(*sys.argv[1:])) |