#!/usr/bin/env python3 # Extract the checksum for all the assets in the public directory. import hashlib import json from pathlib import Path legacy_root = Path(__file__).parent.parent scan_dir = legacy_root / "public" dest_file = legacy_root / "application/assets.json" result = {} def compute_md5(filepath: Path) -> str: with filepath.open("rb") as file: buffer = hashlib.md5() # nosec while True: blob = file.read(8192) if not blob: break buffer.update(blob) return buffer.hexdigest() def compute_md5_foreach_asset_in(root: Path): for path in root.iterdir(): if path.is_dir(): compute_md5_foreach_asset_in(path) else: if path.suffix in (".js", ".css"): result_key = str(path)[len(str(scan_dir)) + 1 :] result[result_key] = compute_md5(path) compute_md5_foreach_asset_in(scan_dir) dest_file.write_text(json.dumps(dict(sorted(result.items())), indent=2) + "\n")