xref: /aosp_15_r20/system/apex/tools/apexer_wrapper_utils.py (revision 33f3758387333dbd2962d7edbd98681940d895da)
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