1*33f37583SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*33f37583SAndroid Build Coastguard Worker 3*33f37583SAndroid Build Coastguard Workerimport hashlib 4*33f37583SAndroid Build Coastguard Workerimport subprocess 5*33f37583SAndroid Build Coastguard Worker 6*33f37583SAndroid Build Coastguard Workerdef RunCommand(cmd: list[str]) -> None: 7*33f37583SAndroid Build Coastguard Worker """Construct a command line from parts and run it.""" 8*33f37583SAndroid Build Coastguard Worker try: 9*33f37583SAndroid Build Coastguard Worker res = subprocess.run( 10*33f37583SAndroid Build Coastguard Worker cmd, 11*33f37583SAndroid Build Coastguard Worker check=True, 12*33f37583SAndroid Build Coastguard Worker stdout=subprocess.PIPE, 13*33f37583SAndroid Build Coastguard Worker universal_newlines=True, 14*33f37583SAndroid Build Coastguard Worker stderr=subprocess.PIPE) 15*33f37583SAndroid Build Coastguard Worker except subprocess.CalledProcessError as err: 16*33f37583SAndroid Build Coastguard Worker print(err.stderr) 17*33f37583SAndroid Build Coastguard Worker print(err.output) 18*33f37583SAndroid Build Coastguard Worker raise err 19*33f37583SAndroid Build Coastguard Worker 20*33f37583SAndroid Build Coastguard Workerdef GetDigest(file_path: str) -> str: 21*33f37583SAndroid Build Coastguard Worker """Get sha512 digest of a file """ 22*33f37583SAndroid Build Coastguard Worker digester = hashlib.sha512() 23*33f37583SAndroid Build Coastguard Worker with open(file_path, 'rb') as f: 24*33f37583SAndroid Build Coastguard Worker bytes_to_digest = f.read() 25*33f37583SAndroid Build Coastguard Worker digester.update(bytes_to_digest) 26*33f37583SAndroid Build Coastguard Worker return digester.hexdigest() 27