summary refs log blame commit diff
path: root/nixos/lib/make-options-doc/sortXML.py
blob: e63ff3538b3fe9edfcd2866c2b5724c4ba483b06 (plain) (tree)




















                                                             





                                                        
import xml.etree.ElementTree as ET
import sys

tree = ET.parse(sys.argv[1])
# the xml tree is of the form
# <expr><list> {all options, each an attrs} </list></expr>
options = list(tree.getroot().find('list'))

def sortKey(opt):
    def order(s):
        if s.startswith("enable"):
            return 0
        if s.startswith("package"):
            return 1
        return 2

    return [
        (order(p.attrib['value']), p.attrib['value'])
        for p in opt.findall('attr[@name="loc"]/list/string')
    ]

options.sort(key=sortKey)

doc = ET.Element("expr")
newOptions = ET.SubElement(doc, "list")
newOptions.extend(options)
ET.ElementTree(doc).write(sys.argv[2], encoding='utf-8')