#!/usr/bin/python3 import json import os import sys def main(): build1 = '40.20240131.91.0' build2 = '40.20240201.91.0' build1 = sys.argv[1] build2 = sys.argv[2] arch = 'x86_64' meta1 = os.path.join('builds', build1, arch, 'meta.json') meta2 = os.path.join('builds', build2, arch, 'meta.json') with open(meta1, mode='r') as f: info1 = json.loads(f.read()) with open(meta2, mode='r') as f: info2 = json.loads(f.read()) fill = ' ' align = '<' width = 16 print(f' platform | compression | {build1:{fill}{align}{width}} | {build2:{fill}{align}{width}}') print(f'---------------------------------------------------------------------') for platform in info1['images']: size1 = info1['images'][platform].get('size', 0) size2 = info2['images'][platform].get('size', 0) uncompressed_size1 = info1['images'][platform].get('uncompressed-size', 0) uncompressed_size2 = info2['images'][platform].get('uncompressed-size', 0) size1 = size_to_human_readable(size1) size2 = size_to_human_readable(size2) uncompressed_size1 = size_to_human_readable(uncompressed_size1) uncompressed_size2 = size_to_human_readable(uncompressed_size2) print(f'{platform:{fill}{align}{width}} | compressed | {size1:{fill}{align}{width}} | {size2:{fill}{align}{width}}') print(f'{platform:{fill}{align}{width}} | uncompressed | {uncompressed_size1:{fill}{align}{width}} | {uncompressed_size2:{fill}{align}{width}}') def size_to_human_readable(size_in_bytes): if size_in_bytes == 0: return "N/A" size_in_mb = size_in_bytes / 1024 / 1024 if size_in_mb > 1: return f'{int(size_in_mb)}MiB' else: size_in_kb = size_in_bytes / 1024 return f'{int(size_in_kb)}KiB' if __name__ == "__main__": sys.exit(main())