from P4 import P4 from argparse import ArgumentParser from csv import DictWriter from sys import stdout parser = ArgumentParser(description='Dump fstat data into CSV format.') parser.add_argument('files', nargs='+', help='Perforce file path(s)') parser.add_argument('--output', '-o', help='Output file (default stdout)') parser.add_argument( '--archive', help='Fetch archive data (requires admin permission)', dest='flags', action='append_const', const='b' ) args = parser.parse_args() args.flags = args.flags or [] with P4().connect() as p4: fstats = p4.run_fstat(f"-Oals{''.join(args.flags)}", args.files) tags = sorted({tag for row in fstats for tag in row}) with open(args.output, "w", newline='') if args.output else stdout as f: writer = DictWriter(f, tags) writer.writeheader() writer.writerows(fstats)