import re

with open("boardloaf-he/boardloafhe.kicad_pcb", "r") as f:
    pcb = f.read()

fps = pcb.split("(footprint ")
for fp in fps[1:]:
    if (
        'Reference" "SW1"' in fp
        or 'Reference" "SW2"' in fp
        or 'Reference" "U1"' in fp
        or 'Reference" "MCU"' in fp
    ):
        ref_match = re.search(r'Reference"\s+"([^"]+)"', fp)
        ref = ref_match.group(1) if ref_match else "Unknown"
        print(f"--- {ref} ---")

        # find pads in KiCad 8 format: (pad "1" smd rect (at ...) (size ...) (layers ...) (net "VCC") ...)
        # actually let's just find `(pad ... (net "...")`
        for pad_str in fp.split("(pad ")[1:]:
            pad_name_match = re.match(r'"([^"]+)"', pad_str)
            pad_name = pad_name_match.group(1) if pad_name_match else "unknown"

            net_match = re.search(r'\(net\s+"([^"]+)"\)', pad_str)
            net_name = net_match.group(1) if net_match else "NO NET"

            print(f"  Pad {pad_name}: {net_name}")
