diff --git a/tools/xeplist-to-csv.py b/tools/xeplist-to-csv.py new file mode 100644 index 00000000..b6d81256 --- /dev/null +++ b/tools/xeplist-to-csv.py @@ -0,0 +1,54 @@ +#!/usr/bin/python3 +import csv +import sys + +import xml.etree.ElementTree as etree + +from xeplib import load_xepinfos + + +def main(): + import argparse + + parser = argparse.ArgumentParser() + + parser.add_argument( + "-l", "--xeplist", + type=argparse.FileType("rb"), + default=None, + help="XEP list to use (defaults to ./build/xeplist.xml)" + ) + + parser.add_argument( + "-d", "--dialect", + default="unix", + ) + + parser.add_argument( + "outfile", + ) + + args = parser.parse_args() + + if args.xeplist is None: + args.xeplist = open("./build/xeplist.xml", "rb") + + with args.xeplist as f: + tree = etree.parse(f) + + accepted, _ = load_xepinfos(tree) + + with open(args.outfile, "w") as f: + writer = csv.writer(f, args.dialect) + for number, info in sorted(accepted.items()): + writer.writerow([ + number, + info["title"], + info["status"].value, + info["last_revision"]["date"].date(), + info["last_revision"]["version"], + ]) + + +if __name__ == "__main__": + main()