#!/usr/bin/env python3
"""
fcc_pa_dump.py
==============
Diagnostic: lists all files inside l_micro.zip, and if PA.dat exists,
dumps enumerated field-by-field rows for the given call signs (so we
can identify the correct columns for transmit/receive location and
antenna numbers -- the proper join for matching antennas to specific
paths, instead of azimuth-guessing).

Usage:
    python fcc_pa_dump.py --zip-cache l_micro.zip WQSY442 WQST669
"""
import argparse
import io
import zipfile

ap = argparse.ArgumentParser()
ap.add_argument("--zip-cache", default="l_micro.zip")
ap.add_argument("call_signs", nargs="+")
args = ap.parse_args()

with zipfile.ZipFile(args.zip_cache) as z:
    print("Files in zip:")
    for n in z.namelist():
        print(" ", n)

    if "PA.dat" not in z.namelist():
        print("\nPA.dat not present in this archive.")
    else:
        print("\nSample PA.dat rows:")
        printed = set()
        with z.open("PA.dat") as raw:
            for line in io.TextIOWrapper(raw, encoding="latin-1"):
                fields = line.rstrip("\n").split("|")
                cs = fields[4].strip() if len(fields) > 4 else ""
                if cs in args.call_signs and cs not in printed:
                    print(f"  PA.dat row for {cs} ({len(fields)} fields):")
                    for idx, val in enumerate(fields, 1):
                        print(f"    [{idx}] {val!r}")
                    printed.add(cs)
                if printed >= set(args.call_signs):
                    break
