Files
bazel-registry/integrity.py
2025-01-20 00:22:55 +01:00

35 lines
984 B
Python

import sys
import hashlib
import base64
from pathlib import Path
import requests
def file_hash(file_path: Path) -> str:
sha256_hash = hashlib.sha256()
with open(file_path, "rb") as file:
while True:
data = file.read(65536)
if not data:
break
sha256_hash.update(data)
return "sha256-" + base64.b64encode(sha256_hash.digest()).decode()
def url_hash(url: str) -> str:
sha256_hash = hashlib.sha256()
with requests.get(url, stream=True) as resp:
resp.raise_for_status()
while True:
data = resp.raw.read(65536)
if not data:
break
sha256_hash.update(data)
return "sha256-" + base64.b64encode(sha256_hash.digest()).decode()
if __name__ == "__main__" and len(sys.argv) > 1:
path = Path(sys.argv[1])
if path.exists():
print(file_hash(path))
else:
print(url_hash(sys.argv[1]))