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)