Source code for dayz_dev_tools.list_pbo

import datetime

from dayz_dev_tools import pbo_reader


[docs] def list_pbo(reader: pbo_reader.PBOReader, *, verbose: bool) -> None: """Print the contents of a PBO archive to stdout in tabular format. :Parameters: - `reader`: A :class:`~dayz_dev_tools.pbo_reader.PBOReader` instance representing the PBO archive to list. - `verbose`: When `True`, additional detail will be printed. """ if verbose: print("Headers:") print("--------") for key, value in reader.headers(): print(f"{key.decode(errors='replace')} = {value.decode(errors='replace')}") print() print(" Original Type Size Date Time Name") print("--------- ---- --------- ---------- ----- ----") else: print(" Original Date Time Name") print("--------- ---------- ----- ----") total_unpacked = 0 total_size = 0 for file in reader.files(): timestamp = datetime.datetime.fromtimestamp(file.time_stamp).strftime("%Y-%m-%d %H:%M") total_unpacked += file.unpacked_size() total_size += file.data_size if verbose: print( f"{file.unpacked_size():9} {file.type()} {file.data_size:9} {timestamp}" f" {file.normalized_filename()}") else: print(f"{file.unpacked_size():9} {timestamp} {file.normalized_filename()}") if verbose: print("--------- --------- ---------") print( f"{total_unpacked:9} {total_size:9} " f"{len(reader.files())} Files") else: print("--------- ---------") print(f"{total_unpacked:9} {len(reader.files())} Files")