#!/usr/bin/env python3
import sys
import os
import csv
import xml.etree.ElementTree as ET
def main():
    if len(sys.argv) != 2:
        print(f"Missing input file argument. Usage: {sys.argv[0]} <input.gpx>", file=sys.stderr)
        sys.exit(1)
    gpx_path = sys.argv[1]
    base, _ = os.path.splitext(gpx_path)
    csv_path = f"{base}.csv"
    tree = ET.parse(gpx_path)
    root = tree.getroot()
    # GPX namespace
    ns = {"default": "http://www.topografix.com/GPX/1/1"}
    # Open the output CSV (tab-separated)
    with open(csv_path, "w", newline="", encoding="utf-8") as csvfile:
        writer = csv.writer(csvfile, delimiter="\t", lineterminator="\n")
        # Iterate over all <wpt> elements
        for wpt in root.findall("default:wpt", ns):
            lat = wpt.get("lat", "")
            lon = wpt.get("lon", "")
            name_elem = wpt.find("default:name", ns)
            name = name_elem.text.strip() if (name_elem is not None and name_elem.text) else ""
            writer.writerow([lat, lon, name])
    print(f"Wrote waypoints to: {csv_path}")
if __name__ == "__main__":
    main()